2017-05-23 11 views
2

최신 Weblogic 서버 버전 12.2.1.2에서 매우 이상한 동작이 관찰되었습니다. 자바 서블릿 애플리케이션에 eclipselink 종속성이 추가되면 Weblogic 서버가/resources/* path 아래에서 Jax-RS Jersey REST 서비스를 자동으로 트리거합니다.eclipselink 이슈를 추가 할 때 Weblogic 12.2.1에 자동 Jax-RS 등록

의심의 여지를 없애기 위해 아주 간단한 helloworld war 파일을 만들었습니다. 샘플 war 파일이 페이지에서 지침에 따라 만들 수 있습니다 (http://geekabyte.blogspot.com/2015/07/how-to-create-war-files-with-intellij.html)

당신은 위의 명령, 기본적으로 당신이 할 수있는 유일한 의존성이 유일한 클래스로

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

이고 helloworld를 따라하는 경우 응용 프로그램. 모든 서버에 배포 할 수 있으며 정상적으로 실행됩니다.

이제 maven pom 파일에 다른 종속성을 추가합니다. 당신이 war 파일을 배포 할 때

<dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>eclipselink</artifactId> 
     <version>2.5.2</version> 
    </dependency> 

는, 서버는 다음과 같은 기록합니다 :

<May 23, 2017, 2:42:47,343 PM MST> <Warning> <JAXRSIntegration> <BEA-2192511> 
<The list of resource packages: org.eclipse.persistence.jpa.rs.exceptions;org.eclipse.persistence.jpa.rs.resources;org.eclipse.persistence.jpa.rs.resources.unversioned> 

을 그리고 당신은 당신의 웹 로직 관리 콘솔 에서 다음을 볼 수 아래 볼 수는 EclipseLink가 이슈입니다 Automatic registration of JAX-RS/Jersey REST service

규칙에 따라 모든 정적 파일을 제공하는 대신/resources/path에 javascript 및 css 파일을 저장하면 서버가 이러한 요청을 처리하려고 시도합니다 JAX-RS 서비스를 통해 404가 반환되지 않습니다.

다른 서버, 다른 버전의 Weblogic 서버, eclipselink 대신 Toplink, 다른 버전의 eclipselink 및 여기에 간단히 설명하지는 않을 다른 여러 가지 사항을 시도했습니다. 분명히 우리는 최신 버전의 Weblogic으로 마이그레이션해야하는 이전 버전의 Weblogic에서 실행중인 작업 응용 프로그램을 보유하고 있습니다. 이 한 가지 종속성에 문제를 지적하는 데는 수 일이 걸렸습니다. 어쨌든이 문제는 모든 버전의 eclipselink가 종속 된 Weblogic 12.2. *에만 존재합니다.

내 모든 분명한 질문은 다음과 같습니다. 왜 이런 일이 발생합니까? 누구도 같은 문제를 경험 했습니까? 당신의 해결책은 무엇입니까?

+0

이상하게 보입니다. 그것은 당신의 문제에 대한 해결책은 아니지만, EclipseLink는 weblogic에서 JPA를 구현하므로, '제공된'범위에서 eclipseLink 종속성을 설정할 수 있습니다. – Rouliboy

답변

2

오류 및 해결책을 명확히하기 위해 Weblogic 12.2.1.2에서이 오류 (/ resources/* path)가 없었지만 12.2.1.3에서이 오류가 발생했습니다./resoures/* 내 조직이 업그레이드 한 후 (12.2.1.3까지).

내 전쟁에 eclipselink.jar가 포함되어 있으므로 "oracode"에서 제안을 시도 했으므로 POM에 "제공된"범위를 지정한 다음 새 전쟁을 구축했지만 결과에 영향을 미치지 않았습니다 . 나는 아직도 문제가 있었다.

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>eclipselink</artifactId> 
    <version>2.5.1</version> 
    <scope>provided</scope> 
</dependency> 

그러나 나에게 도움이되는 해결책은 내 web.xml에 init-param 섹션을 추가하는 것입니다.

내 조직에는 N 개의 웹 서비스가 있으므로 비교하기 시작했고이 서비스 중 하나 (이/resources/*로 실패한 서비스)를 발견했습니다. 에는 명시 적으로 지정된 init-param 섹션이 없습니다. 그래서 나는 그것을 추가했고 웹 서비스는 이제/* 아래에서 잘 작동한다.

<servlet> 
    <servlet-name>jersey</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>com.xxxxxx.xxx.xxx.xxx</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>jersey</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
+0

오, 답변을 빨리 게시했으면 좋겠습니다. Oracle Forum에서 아무런 응답을 얻지 못한 Tomcat 서버와 함께 전략적으로 결정을 내렸고 Weblogic으로 돌아 가기 위해 너무 많은 변경을가했습니다. 문제가 해결되었다는 것을 확인한 이후로, 나는 이것을 나중에 참조 할 답변으로 표시 할 것입니다! –

0

Jersey는 @Provider 주석을 검사하여이 패키지가 자원 또는 공급자를 계산하는지 여부를 결정합니다. WLS에 클래스 패스에 이미 있으므로 eclipse.jar을 webapp에 추가 할 필요가 없습니다.