2014-04-12 5 views
1

내 간단한 REST 기반 webservice에서 실행할 때 문제가 발생합니다. 배포에 성공 보인다,하지만 난 서블릿에 액세스 할 때이 오류가 얻을 :GlassFish-4에서 간단한 서블릿을 실행할 수 없습니다.

WARNING: StandardWrapperValve[MySimpleServer]: Servlet.service() for servlet MySimpleServer threw exception 
    java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 
     at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:662) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 

내 루트의 pom.xml은 매우 간단하고 단지 이러한 종속성 및 플러그인이 포함되어

<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.2</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.8</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>MySimpleServer</finalName> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
       <version>3.1</version> 
      </plugin> 
     </plugins> 
    </build> 

웹을 .XML은 :

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
    <servlet> 
     <servlet-name>MySimpleServer</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>MySimpleServer</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

사실, 오늘 일찍 일을 내가 pom.xml 파일에 전혀 변경 사항이 없습니다. Glassfish4 서버와 관련이 있습니까? 깨끗한 빌드를 만들고 서블릿을 다시 배포하고 GlassFish를 다시 시작했습니다. IE가 가진 두 저지 1 & classpath 2 libs와 - 내가 실수로 Jersey/JAX-RS 버전을 혼합 한 경우

답변

1

나는이 문제를 했어.

pom의 세 가지 종속성과 관련하여 어떻게 이런 일이 발생하는지 알 수는 없지만 어딘가에 이런 일이 발생하고 있음을 확신합니다.

귀하의 stacktrace을 살펴보면, 나는 이것이 어떤 일이 일어나고 있는지를 알 수 있습니다. line 119UriBuilder.uri(String)를 호출 -

이것은 당신이지고있어 정확히 어느 javax.ws.rs-api/2.0UriBuilder.java

118 public static UriBuilder fromUri(String uriTemplate) { 
119  return newInstance().uri(uriTemplate); 
120 } 

입니다.

소스 코드 UriBuilder의 등가 라인 번호는 Jersey 1.8이고 다른 방법은 Javadoc입니다.

그래서 클래스 패스에 jax-rs 2가 있는데이 문제의 원인이됩니다.

어쩌면 공유/공통 클래스 로더 또는 주위에있는 길잃은 lib에있을 수 있습니다.

UPDATE

예 - 뉴저지/JAX-RS libs와와 글래스 피쉬 제공됩니다. 여담으로이 question

을 참조하십시오 - 당신이 할 수 있다면, 나는이

+0

감사를하는 데 도움이 저지 2. 희망을 업그레이드 할 것! GlassFish 4를 사용하고 있습니다. GlassFish에 다른 라이브러리가 포함되어있을 가능성이 있습니까? – Rox

+0

예 (Glassfish 디렉토리에서 * .jar를 검색). 당신이 문제를 해결할 수 있도록 연결된 질문의 대답으로 지시를 따랐다면 나는 추측 할 수 있습니다. – Will

+0

사실 나는 그것을 작동 시켰습니다. 문제가 뭔지 모르지만 각 배포 후에는 GlassFish 폴더 전체를 제거하고 새로 설치하여 새로운 배포 작업에 사용할 수 있도록해야했습니다. Jetty를 위해 GlassFish를 버릴 것입니다. :-) – Rox

관련 문제