2009-09-22 3 views
21

테스트 응용 프로그램에 Jetty를 성공적으로 임베드했습니다. 문제없이 파일을 제공 할 수 있습니다. 이제 Jetty가 자체 Jar 파일 내에있는 파일을 제공 할 수 있는지 알고 싶습니다.Jar 파일 내부에 파일을 찾는 Embedded Jetty

가능한지 아는 사람이 있습니까?

답변

-2

해킹이 더 많을 수도 있지만 JAR 파일이 실제로 ZIP이 아니십니까? (확실하지 않음) 임시 폴더에 압축을 풀어 거기에서 그들을 제공 할 수 있습니까?

+1

나는 할 수 있겠지만 단순함을 위해 Jar 안에 자체 웹 응용 프로그램이 필요합니다. :) – LaSombra

+1

사실 웹 패드 폴더를 설정하려고하면 부두가 내부적으로 처리합니다. 그래서 그다지 멀지 않았습니다. – fd8s0

-7

답을 찾았지만 부두가 아니라 Winstone입니다. http://winstone.sf.net

+0

하지만 OP는 부두에 관해서 물었습니다. – MTCoster

+1

이 답변은 OP에 의한 것입니다 ... – Asaf

+1

OP라고해도이 솔루션은 실제로 해결책이 아니기 때문에 아래로 투표하십시오. 그리고 당신이 직면 한 문제에 걸려 넘어지는 사람이이 해결책을 가지고 갈 수있는 극히 드문 경우입니다. – alok

37

예는 트릭은 클래스 패스 위치에 파일의 URL을 생성하는 것입니다 http://docs.codehaus.org/display/JETTY/Embedding+Jetty

에서 부두 내장 페이지에 나열됩니다.

String webDir = this.class.getClassLoader().getResource("com/company/project/mywebdir").toExternalForm(); 

ServletContextHandler context = new ServletContextHandler(); 
context.setContextPath("/"); 
context.setResourceBase(webDir); 
+1

어떤 클래스가이 코드를 실행해야합니까? – phtrivier

+0

@phtrivier org.mortbay.jetty.Server 또는 org.eclipse.jetty.server.Server를 인스턴스화하는 클래스. –

+0

'request.getRequestDispatcher (...) .forward (req, resp)'가 JAR 파일에서 실행할 때'WEB-INF'에서'.jsp' 파일을 찾지 못하면 어떻게해야할까요? –

5

스프링을 방정식에 넣으면 꽤 간단합니다. 그리고 여기에 간다 :

 
... 

WebAppContext webAppContext = new WebAppContext(); 
webAppContext.setServer(server); 
webAppContext.setContextPath("/"); 
webAppContext.setResourceBase(new ClassPathResource("webapp").getURI().toString()); 

server.addHandler(webAppContext); 

.... 

이렇게하면 jail 파일 내에서 필요한 웹 리소스를 찾을 수 있습니다.

+0

감사. 나는 Maven + Assembly 플러그인으로 그것을했다 :) – LaSombra

+1

'server'는 어떤 타입인가? –

+1

@WimDevelauwe org.eclipse.jetty.server.Server – fionbio