2014-02-13 37 views
0

此刻我正在撞牆。我做了一些開發,使用CXF和Spring創建WebService。這一切都與Jetty 8一起運行良好,但是當我嘗試使用Tomcat 6運行它時,我甚至無法從請求中獲取WSDL。以下是詳細內容:WebService適用於Jetty,但不適用於Tomcat

我的web界面:

@WebService(name="AlertService") 
public interface AlertWebService { 

    @WebMethod 
    HandleAlertResponse openHandleAlert(@WebParam(name = "request") HandleAlertRequest request) throws ServiceException; 
} 

我的web服務IMPL:

@WebService(endpointInterface = "c.h.g.p.service.ws.alert.AlertWebService", serviceName = "AlertService") 
public class AlertWebServiceImpl implements AlertWebService { 

    @Override 
    public HandleAlertResponse openHandleAlert(HandleAlertRequest request) throws ServiceException { 
     //Do some stuff 
    } 

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app ...> 
    <display-name>Prime Service Webapp</display-name> 

    <listener> 
    <listener-class> org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <servlet> 
    <servlet-name>CXFServlet</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/prime-service-webapp/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

端點定義

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

<bean id="alertWebService" class="c.h.g.p.service.ws.alert.AlertWebServiceImpl" /> 

<jaxws:endpoint implementor="#alertWebService" address="/AlertService" /> 

,我打的網址,給了我404錯誤

http://localhost:8090/prime-service-webapp/AlertService?wsdl 

我已經改變了我的tomcat的配置看端口8090我剛落,我的戰爭稱爲黃金-service-webapp進入tomcat的webapps目錄。在prime-service-webapp目錄中添加index.html文件似乎也可以解決問題。但我根本無法獲得wsdl。

任何想法 - 讓我知道。有什麼特定的tomcat 6服務器配置我需要改變以得到這個工作?

回答

1

我承認我對此事一無所知碼頭,但在Tomcat中,你把它的方式,你需要使用這個網址:

http://localhost:8090/prime-service-webapp/prime-service-webapp/AlertService?wsdl 

有一個嘗試。原因是Tomcat作爲上下文根默認分配戰爭的名字,而你已指示您的CXF的servlet聽

<url-pattern>/prime-service-webapp/*</url-pattern> 

這意味着在上下文根另一個水平(即使是相同的)

+0

大- 而已!但是我怎樣才能告訴tomcat我真的只想在url中使用一個「prime-service-webapp」?不用修改web.xml,它可以在Jetty下正常工作。我需要與兩個應用程序服務器兼容。 – Ash

+0

我從來沒有嘗試過使用tomcat:S根據本文檔,在部署(或在其管理控制檯中)之後,您可能必須對服務器的配置文件進行一些修改http://tomcat.apache.org/tomcat-6.0-doc /config/context.html –

相關問題