首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebService与Jetty合作,但与Tomcat不合作

WebService与Jetty合作,但与Tomcat不合作
EN

Stack Overflow用户
提问于 2014-02-13 18:00:28
回答 1查看 1.5K关注 0票数 0

我此刻正把头撞在墙上。我做了一些开发,使用CXF和Spring创建了一个WebService。Jetty 8运行得很好,但是当我尝试使用Tomcat 6运行它时,我甚至无法从请求中获得WSDL。详情如下:

我的webservice接口:

代码语言:javascript
复制
@WebService(name="AlertService")
public interface AlertWebService {

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

我的webservice进程:

代码语言:javascript
复制
@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
    }

My web.xml:

代码语言:javascript
复制
<?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>

端点定义

代码语言:javascript
复制
<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个错误

代码语言:javascript
复制
http://localhost:8090/prime-service-webapp/AlertService?wsdl

我已经更改了tomcat配置,以查看端口8090。我只是把我的战争叫做黄金服务-webapp放到了tomcat的webapp目录中。在主服务-webapp目录中添加一个index.html文件似乎也可以解决问题。但我根本无法获得wsdl。

有什么想法-告诉我。是否有什么特定于tomcat 6服务器配置的东西,我需要更改才能使其正常工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 18:06:11

我承认我对jetty一无所知,但是在tomcat中,用你的话来说,你需要使用这个URL:

代码语言:javascript
复制
http://localhost:8090/prime-service-webapp/prime-service-webapp/AlertService?wsdl

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

代码语言:javascript
复制
<url-pattern>/prime-service-webapp/*</url-pattern>

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21761984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档