我正在使用tomEE 1.7.1和Apache CXF 2.6.14。
我有一个为WSDL第一个Web服务提供服务的组件:
@Stateless
@WebService(
endpointInterface = "com.mycompany.SecurityTokenServiceWS",
targetNamespace = "http://sts.mycompany/wsdl/",
serviceName = "SecurityTokenService",
portName = "TokenService")
@SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL)
public class TokenService implements SecurityTokenServiceWS {
//service methods
}
当我部署Web应用程序时,我会看到此日志:
Jan 30, 2015 12:47:22 PM org.apache.openejb.server.webservices.WsService deployApp
INFORMATION: Webservice(wsdl=http://localhost:8080//webservices/TokenService, qname={http://sts.mycompany.com/wsdl/}SecurityTokenService) --> Ejb(id=TokenService)
结果,网络服务可在以下网址获得:http://localhost:8080/webservices/TokenService。
我喜欢的是该服务直接在http://localhost:8080/TokenService上运行。
我不知道“webservices”路径元素来自哪里。它不在WSDL中,也不在任何配置文件中。我的Web应用程序直接在上下文路径/(ROOT)下运行。
是否有绑定到/ webservices的神奇CXF servlet?我该如何改变这种行为?
答案 0 :(得分:0)
要更改发布地址,您需要更改端点配置。现在我想你没有配置,所有都是默认的。您需要创建文件 service.xml (任何名称)并使用 web.xml CXFServlet init-parameter“ config-location “或使用 Spring 。
这是文件内容http://cxf.apache.org/docs/jax-ws-configuration.html
以下是如何使用spring http://cxf.apache.org/docs/writing-a-service-with-spring.html
执行此操作的示例答案 1 :(得分:0)
这来自TomEE,它默认使用子上下文webservices。
此示例显示了如何更改它https://git-wip-us.apache.org/repos/asf?p=tomee.git;a=tree;f=examples/change-jaxws-url;h=2f88382bd4f925ec27c7305e74d361c8baf46a92;hb=ebe63371a22709a50e79c42206b5e9a0fd8946cc(有趣的文件是https://git-wip-us.apache.org/repos/asf?p=tomee.git;a=blob;f=examples/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml;h=6c0ba44b14eb2e67a550c65d890d325c8bf409b7;hb=ebe63371a22709a50e79c42206b5e9a0fd8946cc)
注意:如果您只想重命名/ webservices,可以在conf / system.properties中设置tomee.jaxws.subcontext = / myothersubcontext
PS:如果你使用openejb-jar.xml解决方案,请注意,openejb-jar.xml 1.1的等价物只是ejb-deployment属性中的属性openejb.webservice.deployment.address