我遇到了一个非常令人困惑的问题,我目前正在使用Websphere 7.0.0.27和使用org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean
类的特定Web服务调用(来自spring-web 3.2.3.RELEASE或3.1.1) 。发布)。当我从头开始服务器时,服务调用运行正常。我可以调用该服务,获取数据,我的应用程序功能就好了。但是,当我重新发布我的应用程序时,后续调用会产生以下结果:
javax.xml.ws.WebServiceException: ServiceDescription.updateEndpointDescription:无法执行getPort() 指定与先前的getPort()不同的SEI。 PortQN:{0}; 目前的SEI:{1};以前的SEI:{2} at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173) 在 org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70) 在 org.apache.axis2.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:178) 在 org.apache.axis2.jaxws.spi.ServiceDelegate.getPort(ServiceDelegate.java:584) 在 org.apache.axis2.jaxws.spi.ServiceDelegate.getPort(ServiceDelegate.java:507) 在javax.xml.ws.Service.getPort(Service.java:103)at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.getPortStub(JaxWsPortClientInterceptor.java:419) 在 org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.prepare(JaxWsPortClientInterceptor.java:337) 在 org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.invoke(JaxWsPortClientInterceptor.java:484) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 在$ Proxy109.search(未知来源)at ...
在应用发布后,服务调用仅发生在。我可以一遍又一遍地调用服务,然后发布,然后我开始解决这个问题。重新启动Websphere之后,问题就消失了,直到我再次发布。同样重要的是,这似乎只发生在我运行服务器设置“使用工作区内的资源运行服务器”时。选项“在服务器上运行带有资源的服务器”没有发生这种情况,但我不想使用该设置,因为我需要进行整个发布(而不是简单的文件保存)以使我的JSP更改为出现,这是一个更大的浪费时间。另外,我正在使用Eclipse(4.2),这也发生在RAD(7.5)中。
之前是否还有其他人遇到此问题,您是否能够解决此问题?当我遇到它时,我会尝试提供任何进一步的细节。
答案 0 :(得分:0)
修复程序也很模糊,但是在bean上定义了portName
属性,删除该属性修复了问题。 Spring显然会使用该属性来构建javax.xml.namespace.QName
(通过javax.xml.namespace.QName.QName(String namespaceURI, String localPart)
),如果没有portName
属性集,它会选择使用serviceInterface
属性。
portName
和serviceInterface
属性实际上是不同的值。 portName
被设置为WSDL中定义的<port name=""/>
,这可能是不正确的事情。使用QName localPart
参数的接口类名最终是我的修复,但更好的portName
参数也可能解决问题。