2011-10-27 2 views
2

불행히도이 문제를 해결하기 위해 수 시간 동안 검색하고 시도했습니다.RESTEasy UnavailableException HttpServletDispatcher

Java 1.6, RESTEasy 2.2.1.GA 및 Jetty Embedded Server를 사용하여 웹 서비스를 설정하고 있습니다. 원래이 프로젝트를 설정하기 위해 기존 작업 프로젝트를 복사했습니다. 어떻게 든 원래 프로젝트가 작동하고 조정 된 사본이 제대로 작동하지 않습니다. 나는 다음과 같은 예외가 내장 서버를 시작한 후

:

다음

콘솔의 말씀입니다 :

2011-10-27 09:22:51.113::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 
2011-10-27 09:22:51.141::INFO: jetty-6.0.2 
2011-10-27 09:22:51.352::WARN: failed Resteasy 
javax.servlet.UnavailableException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:78) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:229) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:574) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:128) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:421) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:496) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:119) 
    at org.mortbay.jetty.Server.doStart(Server.java:228) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 
    at com.xtag.locationadapter.webui.EmbeddedServer.main(EmbeddedServer.java:41) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
2011-10-27 09:22:51.398::WARN: Failed startup of context [email protected]{/admin,file:/Users/workspace/LocationAdapter/webui/target/classes/com/company/locationadapter/webui/webapp/} 
javax.servlet.UnavailableException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:78) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:229) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:574) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:128) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:421) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:496) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:119) 
    at org.mortbay.jetty.Server.doStart(Server.java:228) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 
    at com.xtag.locationadapter.webui.EmbeddedServer.main(EmbeddedServer.java:41) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
2011-10-27 09:22:51.400::INFO: Started SocketConnector @ 0.0.0.0:8088 

이 내 프로젝트 구조입니다. 이름 UI를이 폴더의 내용에 맞게 나던 사실을 : 무시하십시오

LocationAdapter 
    - .idea 
    - .settings 
    - bin 
    - webui 
    |- src 
     |- main 
     |- java 
      |- com.company.locationadapter.communication.rest 
      |- ResteasyApplication.java 
      |- com.company.locationadapter.communication.restservices 
      |- LocationResource.java 
      |- LocationResourceImpl.java 
      |- com.company.locationadapter.service 
      |- LocationService.java 
      |- LocationServiceImpl.java 
      |- com.company.locationadapter.webui 
      |- EmbeddedServer.java 
     |- resources 
      |- com.company.locationadapter.webui.webapp 
      |- dummy.html 
      |- com.company.locationadapter.webui.webapp.WEB-INF 
      |- web.xml 

내 ResteasyApplication 등급 :

public class ResteasyApplication extends Application { 

    @Override 
    public Set<Object> getSingletons() { 
     Set<Object> set = new HashSet<Object>(); 
     set.add(new LocationResourceImpl()); 
     return set; 
    } 

    @Override 
    public Set<Class<?>> getClasses() { 
     return super.getClasses(); 
    } 
} 

내 EmbeddedServer 등급 :

public class EmbeddedServer { 

    private static final String WEBAPP = "com/company/locationadapter/webui/webapp"; 
    private static final String CONTEXT_PATH = "/admin"; 

    public static void main(String[] args) throws Exception { 

     addSystemProperties(); 
     final Server server = new Server(8088); 
     final URL warUrl = EmbeddedServer.class.getClassLoader().getResource(WEBAPP); 
     final String warUrlString = warUrl.toExternalForm(); 
     server.setHandler(new WebAppContext(warUrlString, CONTEXT_PATH)); 
     server.start(); 
    } 

    protected static void addSystemProperties() { 
     try { 
      Properties properties = new Properties(System.getProperties()); 
      String path = System.getProperty("user.properties"); 
      properties.load(new FileInputStream(new File(path))); 
      System.setProperties(properties); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

웹. RESTEasy 구성을위한 xml :

<web-app> 

    <display-name>LocationAdapter</display-name> 
    <description>Company</description> 

    <context-param> 
      <param-name>resteasy.servlet.mapping.prefix</param-name> 
      <param-value>/locationadapter</param-value> 
    </context-param> 

    <servlet> 
     <servlet-name>Resteasy</servlet-name> 
     <servlet-class> 
      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
     </servlet-class> 
     <init-param> 
      <param-name>javax.ws.rs.Application</param-name> 
      <param-value>com.company.locationadapter.communication.rest.ResteasyApplication</param-value> 
     </init-param> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Resteasy</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 

</web-app> 

누군가이 아이디어에 대한 아이디어 나 해결책을 갖고 있다면 정말 고맙겠습니다. 추가 정보가 필요하면 알려주십시오.

미리 감사드립니다.

답변

2

문제가 해결되었지만 "resteasy-jaxb-provider"아티팩트의 범위가 제공된

으로 설정된 POM.xml의 항목으로 인해 예외가 발생했습니다.