我正在尝试创建一些可以为公司思科手机增添一点功能的宁静web服务。基本思想很简单,用户可以获得一个小型客户端,他们需要输入登录名和密码。当他们这样做时,他们的电话/电话已经注册到我的安宁服务中,并且他们的手机上增加了功能。当他们注销时,他们会被取消注册。为了提供额外的功能(如调整后的来电者信息等),我需要Cisco AXL API。这是一个基于SOAP的API。我已经使用wsdl生成了java类。当我使用生成的类创建测试客户端时,所有工作都正常。AXL的RESTful服务
但这里谈到的问题:当我尝试在我的应用程序部署在Tomcat的我7容器来运行一个SOAP请求,它不工作了。
这个问题似乎是AXLAPIService,执行下面的代码段时挂起:
@WebEndpoint(name = "AXLPort")
public AXLPort getAXLPort() {
return super.getPort(new QName("http://www.cisco.com/AXLAPIService/", "AXLPort"), AXLPort.class);
}
换句话说,我没有得到SOAP请求的端口,它使Tomcat的崩溃,如果你等待足够长的时间。
我去了谷歌搜索。有些论坛上的某人曾经因为过时的stax版本而出现问题。我调整了POM中的stax版本,然后再次尝试,没有任何帮助。
我也读过一些地方,下层javax.xml.ws.Service实际上有一个端口的枚举,当你做getPort()时,你将得到最合适的端口。然后,我查找了SOAP的默认端口,这将是80,就像用于RESTful服务的端口一样。肥皂服务可能是想要端口80,但它不能拥有它,因为它已被使用?
所以,总结一下我的问题:
- 可以说,它是我的RESTful服务消费,我的肥皂 请求将要使用同一端口?
- 如果不是,那么可能是什么问题,我该如何解决?
至于更多的信息,这是AXL WSDL如何定义服务:
<service name="AXLAPIService">
<port binding="s0:AXLAPIBinding" name="AXLPort">
<soap:address location="https://CCMSERVERNAME:8443/axl/"/>
</port>
我在想改变皂埠自己。一些谷歌搜索告诉我,我应该在WSDL中这样做,但我真的不知道如何。已有帖子here,但我看不到如何绑定另一个端口名称可以帮助我......