2017-12-11 43 views
1

저는 Java에 매우 익숙합니다. 왜 이런 일이 일어나고 있는지 잘 모르겠습니다.부두 + Jersey가 intelliJ에서 작동하지 않습니다.

저는 Jersey + Jetty를 사용하여 작은 자바 응용 프로그램을 개발했습니다. 이것은 intelliJ에서 실행할 때 완벽하게 작동하지만 항아리에서는 작동하지 않습니다. 내가 localhost : 2222 부두로 갈 때 부두가 나에게 index.html 페이지 를 표시해야하지만 부두가이 서버의 컨텍스트에서이 요청과 일치하거나 처리하지 못했다고합니다.

항아리는이 지침 How to build jars from IntelliJ properly?

public class App{ 
    private static final int SERVER_PORT = 2222; 

    public static void main(String[] args) throws Exception { 
     URI baseUri = UriBuilder.fromUri("http://localhost").port(SERVER_PORT) 
     .build(); 
     ResourceConfig config = new ResourceConfig(Resource.class); 
     Server server = JettyHttpContainerFactory.createServer(baseUri, config, 
     false); 

     ContextHandler contextHandler = new ContextHandler("/rest"); 
     contextHandler.setHandler(server.getHandler()); 

     ResourceHandler resourceHandler = new ResourceHandler(); 
     resourceHandler.setWelcomeFiles(new String[] { "index.html" }); 
     resourceHandler.setResourceBase("src/Web"); 

     HandlerCollection handlerCollection = new HandlerCollection(); 
     handlerCollection.setHandlers(new Handler[] { resourceHandler, 
     contextHandler, new DefaultHandler() }); 
     server.setHandler(handlerCollection); 
     server.start(); 
     server.join(); 
     } 
} 

답변

2

은 몇 가지가이 작업을 얻을 필요했다 new ContextHandler("/");해야한다. 먼저 src/web 디렉토리가 .jar에 포함되지 않았습니다.

코드가 .jar에서 index.html 페이지의 위치를 ​​찾지 못해서 문제가 지속되었습니다.

내 코드를 다음과 같이 변경하면 문제가 해결됩니다.

String webDir = this.getClass().getClassLoader().getResource("src/Web").toExternalForm(); 

ResourceHandler resourceHandler = new ResourceHandler(); 
resourceHandler.setWelcomeFiles(new String[]{"index.html"}); 
resourceHandler.setResourceBase(webDir); 
0

지정한 컨텍스트 경로가 임베디드 부두 코드 /rest 인을 사용하여 만들었습니다.

표시되는 메시지는 사용자에게 알려줍니다.

당신이 루트에있을하려면

는 다음 코드 대신

+0

이는 작동하지 않습니다. 내 IDE localhost : 2222에서 실행하면 의도 한대로 index.html 페이지가 나타납니다. 하지만 항아리에서 그것을 실행하면 그렇지 않습니다. 저지가 항아리에없는 것 같지만 사실인지 확인하기 위해 Java에 대해 충분히 알지 못합니다. – EarlyDev

+0

jar에있는 index.html이'src/Web' 폴더에 있습니까? –

+0

예, 지금 답변을 게시 할 문제를 발견했습니다. – EarlyDev