2013-08-10 2 views
0

maven을 사용하여 Tomcat7에 웹 서비스를 배포하려고합니다.Tomcat에서 CXF webservices 배포

나는 몇 가지 구성 정보 제공 아래 :

web.xml을

... 
<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 
... 

의 pom.xml

... 
<build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>tomcat-maven-plugin</artifactId> 
       <version>1.1</version> 
       <configuration> 
        <url>http://localhost:8080/manager/text</url> 
        <server>TomcatServer</server> 
        <path>/services/userinfo</path> 
... 

<url-pattern>/services/*</url-pattern><path>/services/userinfo</path> 구성을 감안할 때 URL http://localhost:8080/services/userinfo 쇼 404.

대신 <url-pattern>/*</url-pattern>을 사용하면 모든 것이 예상대로 작동합니다 (예 : http://localhost:8080/services/userinfo은 사용 가능한 방법 목록을 보여줍니다.

질문 :

/services/* 내 경우에는 작동하지 않는 이유는 무엇입니까?

답변

1

당신이 웹 애플리케이션 (컨텍스트 루트)를 배포하는 경우

<path>/services/userinfo</path> 

가 정의 바람둥이 - 받는다는 - 플러그인 구성의 경로. 이 경우에는

으로 배포하고 있습니다. Tomcat 설치의 webapps 디렉토리를 확인하십시오. 당신이로 CXFServlet도 매핑을 정의하고 있기 때문에/서비스/*의 CXF 서비스 목록

당신은/*, 그냥 예상대로 작동 나타났다에 매핑을 정의 다시
http://localhost:8080/services/userinfo/services/ 

에서

보여줄 것이다, 하지만 사용 된 컨텍스트 루트와 예상했던 서비스 리스팅 경로가 동일하기 때문에 그럴 수밖에 없습니다.

+0

내 서비스의 전체 URL은'http : // localhost : 8080/services/userinfo/UserInfoService'입니다. ('cxf-servlet.xml'은 여기서는 역할을하지 않기 때문에 표시하지 않았습니다. 서비스 목록은'http : // localhost : 8080/services/userinfo /'에 나타납니다. 와일드 카드'/ services/* '의 명세가 정확하게 이해되면'services' 경로 아래의 하위 디렉토리에 대해 작동합니다. BTW 생성 된 전쟁 이름은'services # userinfo.war'입니다. – Eugen

+1

매핑을 다시 '/services/*'으로 변경하면 서비스 목록이 'http : // localhost : 8080/services/userinfo/services'에 표시됩니까? 그것이 내가 기대할 것입니다. services # userinfo.war 이름은 CXF 나 서블릿 매핑과 관계없이 웹 애플리케이션을'http : // localhost : 8080/services/userinfo /'로 매핑합니다. – Patrick

+0

예. 포트 번호 바로 다음부터 일치가 시작될 것이라고 생각했습니다. – Eugen