WebService适用于Jetty,但不适用于Tomcat



我现在正在用头撞墙。我做了一些开发,使用 CXF 和 Spring 创建了一个 Web 服务。在 Jetty 8 中一切正常,但是当我尝试使用 Tomcat 6 运行它时,我甚至无法从请求中获取 WSDL。以下是详细信息:

我的网络服务界面:

@WebService(name="AlertService")
public interface AlertWebService {
    @WebMethod
    HandleAlertResponse openHandleAlert(@WebParam(name = "request") HandleAlertRequest request) throws ServiceException;
}

我的网络服务:

@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
    }

我的网站.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。我只是把我的战争叫做prime-service-webapp放到tomcat的webapps目录中。将索引.html文件添加到prime-service-webapp目录中似乎也可以解决。但我根本无法获得 wsdl。

任何想法 - 让我知道。我需要更改任何特定于 tomcat 6 服务器配置的内容才能使其正常工作吗?

我承认我对码头一无所知,但在 tomcat 中,按照你的说法,你需要使用这个 URL:

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

一试。 原因是 tomcat 默认将战争名称指定为上下文根,并且您已经指示您的 cxf servlet 侦听

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

这意味着上下文根下的另一个级别(即使它是相同的)

相关内容

  • 没有找到相关文章

最新更新