2011-03-25 2 views
1

jar 파일과 함께 war 파일로 구성된 ear 파일이 있습니다. 다음과 같은 내용으로 application.xml을 :war 파일에서 @WebService와 @Stateless를 사용할 때 application.xml의 컨텍스트 경로를 무시하는 JBoss

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE application PUBLIC 
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" 
    "http://java.sun.com/dtd/application_1_3.dtd"> 
<application> 
    <display-name>Web Application</display-name> 
    <module> 
     <web> 
      <web-uri>web-endpoint-1.0.war</web-uri> 
      <context-root>/web</context-root> 
     </web> 
    </module> 
    <module> 
     <ejb>backend-1.1.jar</ejb> 
    </module> 
</application> 

이 귀 파일이 6 AS JBOSS에 배포되고는 그러나 컨텍스트 루트는 무시되고 있으며, 전쟁 파일의 이름이 컨텍스트 루트에 사용하고있다.

누군가 Jboss가 application.xml에 지정된 내용을 무시하는 이유를 지적 할 수 있습니까?

감사합니다.


나는이 문제에 더보고하고 문제가 이것이다 : WAR 파일에서

, 나는 웹 서비스를 구현하는 무 상태 세션 빈을 가지고있다. 상태 비 저장 세션빈을 제거하면 필요에 따라 컨텍스트 루트가 application.xml에 지정된 것과 일치합니다. @WebService 주석을 사용하여 war 파일에서 웹 서비스를 구현하는 가장 좋은 해결책은 무엇입니까?

답변

1

다음과 같이이 문제에 대한 해결책을 찾았습니다.

클래스에 @Stateless 주석을 사용하는 대신 @WebService 주석을 사용하여 클래스를 서블릿으로 변경했습니다.
이 해결 방법을 사용하면 JavaEE6에서 가능해야하지만 war 파일에서 stateless 세션 bean을 사용할 필요가 없습니다.
배포 할 때 war 파일의 컨텍스트 루트가 이제 application.xml 파일의 컨텍스트 루트에 해당합니다.

1

@WebContext(contextRoot="/YourContextRoot") 주석을 추가하십시오.

이것은 나를 위해 잘 작동했습니다.