Java WebService与Jetty一起工作,但与Tomcat不一起工作
我此刻正把头撞在墙上。我使用CXF和Spring进行了一些开发,创建了一个Web服务。使用Jetty 8时一切都很好,但是当我尝试使用Tomcat 6运行它时,我甚至无法从请求中获取WSDL。详情如下: 我的Web服务界面:Java WebService与Jetty一起工作,但与Tomcat不一起工作,java,web-services,cxf,tomcat6,jetty-8,Java,Web Services,Cxf,Tomcat6,Jetty 8,我此刻正把头撞在墙上。我使用CXF和Spring进行了一些开发,创建了一个Web服务。使用Jetty 8时一切都很好,但是当我尝试使用Tomcat 6运行它时,我甚至无法从请求中获取WSDL。详情如下: 我的Web服务界面: @WebService(name="AlertService") public interface AlertWebService { @WebMethod HandleAlertResponse openHandleAlert(@WebParam(nam
@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 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>
我的Web服务impl:
@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 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>
myweb.xml:
@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 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>
我已经更改了tomcat配置以查看端口8090。我只是将名为prime service webapp的war放入tomcat的webapps目录中。将index.html文件添加到prime service webapp目录中似乎也可以解决此问题。但我根本无法获取wsdl
任何想法-让我知道。我是否需要更改tomcat 6服务器配置以使其正常工作?我承认我对jetty一无所知,但在tomcat中,按照您的说法,您需要使用以下URL:
http://localhost:8090/prime-service-webapp/prime-service-webapp/AlertService?wsdl
试试看。原因是tomcat默认将war名称指定为上下文根,并且您已经指示您的CXFServlet侦听
<url-pattern>/prime-service-webapp/*</url-pattern>
/prime服务webapp/*
这意味着上下文根目录下的另一个级别(即使是相同的)太好了-就是这样!但我如何告诉tomcat我实际上只想在url中使用一个“prime service webapp”?无需修改web.xml,它可以很好地与Jetty配合使用。我需要与两个应用程序服务器兼容。我从未尝试过tomcat:S。根据本文档,您可能需要在部署后(或在其管理控制台中)对服务器的配置文件进行一些修改