1

我目前在使用 Websphere 7.0.0.27 和使用org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean该类的特定 Web 服务调用(来自 spring-web 3.2.3.RELEASE 或 3.1.1.RELEASE)时遇到了非常令人困惑的问题。当我从头开始启动服务器时,服务调用运行良好。我可以调用服务,取回数据,并且我的应用程序功能正常。但是,当我重新发布我的应用程序时,后续调用会导致以下结果:

javax.xml.ws.WebServiceException:ServiceDescription.updateEndpointDescription:不能执行 getPort(),指定与之前的 getPort() 不同的 SEI。端口 QN:{0};当前 SEI:{1};以前的 SEI:{2} 在 org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70) 在 org.apache.axis2 的 org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173) .jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118) 在 org.apache.axis2.jaxws.description.impl.ServiceDescriptionImpl.updateEndpointDescription(ServiceDescriptionImpl.java:557) 在 org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl .updateEndpoint(DescriptionFactoryImpl.java:372) 在 org.apache.axis2.jaxws.description.DescriptionFactory.updateEndpoint(DescriptionFactory.java:

仅在应用发布后,服务调用才会发生这种情况。我可以一遍又一遍地调用服务而没有问题,然后发布,然后我开始遇到这个问题。重新启动 Websphere 后,问题就消失了,直到我再次发布。同样重要的是,这似乎只发生在我运行服务器设置“使用工作区中的资源运行服务器”时。“使用服务器上的资源运行服务器”选项不会发生这种情况,但我不想使用该设置,因为我需要进行整个发布(而不是简单地保存文件)才能将我的 JSP 更改为出现,这是一个更大的浪费时间。另外,我使用的是 Eclipse (4.2),这也发生在 RAD (7.5) 中。

以前有没有其他人遇到过这个问题,你能解决它吗?当我遇到它时,我会尝试提供任何进一步的细节。

4

1 回答 1

0

修复也很模糊是合适的,但是该portName属性是在 bean 上定义的,并且删除该属性可以解决问题。Spring 显然会使用该属性来构建一个javax.xml.namespace.QName(via javax.xml.namespace.QName.QName(String namespaceURI, String localPart)),并且在没有portName属性集的情况下它选择使用该serviceInterface属性。

The portName and serviceInterface properties were in fact different values. The portName was being set to the <port name=""/> that's defined in the WSDL, which may have been the incorrect thing to do. Using the interface class name for the QName localPart parameter was ultimately my fix, but it is possible that a better portName parameter would also fix the issue.

于 2013-10-08T23:28:38.783 回答