2017-04-26 1 views
2

분산 시스템을 학교 프로젝트로 만들고 있는데 REST 서비스가 있어야합니다. 이것은 로그인/등록 기능과 일부 정보 전송을 사용하는 간단한 서비스가 될 것입니다.AWS에 REST API 배포

NetBeans의 Java에서 REST API를 만들었습니다. 로컬에서는 잘 작동하지만 AWS 서버에 배치하는 데 어려움이 있습니다. 나는 서버에 대한 경험이 없으므로 어떻게 작동하는지 실제로 알지 못한다. 나는 서버에서 서비스를 시작하고 실행하는 것이 쉬워야한다고 생각했다.

지금까지 나는 this 가이드를 사용하여 REST에 대한 지침을 작성했으며 Elastic Beanstalk을 사용하여 war 파일을 배포하려고 시도했습니다.

내 자바 코드 :

ApplicationConfig.java

package dk.dtu.ds.login; 

import java.util.Set; 
import javax.ws.rs.core.Application; 

@javax.ws.rs.ApplicationPath("CoL") 
public class ApplicationConfig extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> resources = new java.util.HashSet<>(); 
     addRestResourceClasses(resources); 
     return resources; 
    } 

    /** 
    * Do not modify addRestResourceClasses() method. 
    * It is automatically populated with 
    * all resources defined in the project. 
    * If required, comment out calling this method in getClasses(). 
    */ 
    private void addRestResourceClasses(Set<Class<?>> resources) { 
     resources.add(dk.dtu.ds.login.Login.class); 
    } 
} 

Login.java

package dk.dtu.ds.login; 

import cleanoutloudserver.ICleanOutLoud; 
import java.net.MalformedURLException; 
import java.net.URL; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.MediaType; 
import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 

@Path("login") 
public class Login { 
    // HTTP Get Method 

    @GET 
    @Path("dologin") 
    // Produces JSON as response 
    @Produces(MediaType.APPLICATION_JSON) 
    // Query parameters are parameters: http://localhost/colrest/CoL/login/dologin?username=s150157&password=1234 
    public String doLogin(@QueryParam("username") String uname, @QueryParam("password") String pwd) throws MalformedURLException, Exception { 
     URL url = new URL("http://ec2-52-43-233-138.us-west-2.compute.amazonaws.com:3769/col?wsdl"); 
     QName qname = new QName("http://cleanoutloudserver/", "CleanOutLoudImplService"); 
     Service service = Service.create(url, qname); 
     ICleanOutLoud col = service.getPort(ICleanOutLoud.class); 

     String token = col.login(uname, pwd); 

      token = Utility.constructJSON(token); 
      System.out.println("\nChecking credentials = true\n"); 
     return token; 
    } 
} 

web.xml을

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 
    <display-name>RESTWebApp</display-name> 
    <servlet> 
     <servlet-name>jersey-servlet</servlet-name> 
     <servlet-class> 
      com.sun.jersey.spi.container.servlet.ServletContainer 
     </servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>dk.dtu.ds.login</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>jersey-servlet</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

나는 다음을 열려고하면3210 서비스에 대해 빈 페이지가 표시됩니다. 내 Chrome 콘솔에 "GET (링크) 404 (찾을 수 없음)"이라고 표시됩니다.

저는 HTTP와 서버에 익숙하지 않기 때문에 무엇을해야할지 모르겠습니다. AWS를 사용하여 간단한 REST 서비스를 손쉽게 배포 할 수 있습니까?

저는 실제로 Google에서 도움을 얻으려고했지만 지금까지 성공하지 못했습니다.

+0

IAM 정책을 통해 필요한 액세스를 설정해야 할 수 있습니다. – notionquest

+0

응용 프로그램을 어떻게 패키지로 만들고 테스트 했습니까? AWS ElasticBeanstalk Tomcat 인스턴스 유형에서 실행하려면 추가 라이브러리가 필요하지만 로컬 Tomcat에서 필요로하는 것과 동일한 라이브러리가 필요합니다. – stdunbar

+0

http://stackoverflow.com/questions/41235012/rest-api-aws-cloud-using-java/41235422#41235422에 제공된 답변을 따르십시오. 문제가 해결되지 않으면 알려주세요. –

답변