我刚开始编写Web服务,并且正在努力理解如何指定上下文根。
我的班级用
注释了@Service
@javax.jws.WebService(endpointInterface= "com.domain.clientservices.lendingsimulation.model.v1.LendingSimulationServicePortType", targetNamespace="http://www.domain.com/ClientServices/LendingSimulation/V1.2", serviceName="LendingSimulationService", portName="LendingSimulationServicePort")
但我不知道如何为它配置context-root / path。我读到我可以将它配置为web.xml中的servlet,但似乎是一个没有注释的Web服务的情况。我错了吗?我在web.xml中尝试了以下配置:
<servlet>
<description>This is the description for the LendingSimulation Service</description>
<display-name>Lending Simulation Service</display-name>
<servlet-name>LendingSimulationService</servlet-name>
<servlet-class>com.domain.clientservices.lendingsimulation.service.LendingSimulationServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LendingSimulationService</servlet-name>
<url-pattern>/WebService</url-pattern>
</servlet-mapping>
然而,当我在JBoss中启动时,我收到错误消息:
17:39:33,710 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/LendingSimulationService].[LendingSimulationService]] (http--127.0.0.1-8080-2) Allocate exception for servlet LendingSimulationService: java.lang.ClassCastException: com.domain.clientservices.lendingsimulation.service.LendingSimulationServiceImpl incompatible with javax.servlet.Servlet
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1156) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
... (omitted for brevity)
我已经读过我可以专门配置jboss-web.xml,但我认为有一种更通用的方法可以应用于所有应用服务器 - 不存在吗?或者我必须独立配置服务,具体取决于我部署的AS(即:Tomcat的一种方式,GlassFish的一种方式,JBoss的一种方式,WebSphere的一种方式等)。
是否有可用于指定Web服务路径的注释?或web.xml文件中的配置参数?
谢谢!
埃里克
答案 0 :(得分:0)
原来我得到的JBoss错误是由于没有启用webservices模块。在JBoss7.0 / 7.1中,您需要运行standalone-preview.xml配置来获取开箱即用的webservices:ie standalone.sh --server-config = standalone-preview.xml。这消除了ClassCast / Servlet异常。但是,如果没有更好的/其他方法来实现这一点(可能通过注释),而不是将其声明为web.xml中的servlet,那么我的问题仍然存在。