每个应用程序发布后,来自JaxWsPortProxyFactoryBean的WebServiceException

时间:2013-10-08 19:16:21

标签: java eclipse spring websphere axis

我遇到了一个非常令人困惑的问题,我目前正在使用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)中。

之前是否还有其他人遇到此问题,您是否能够解决此问题?当我遇到它时,我会尝试提供任何进一步的细节。

1 个答案:

答案 0 :(得分:0)

修复程序也很模糊,但是在bean上定义了portName属性,删除该属性修复了问题。 Spring显然会使用该属性来构建javax.xml.namespace.QName(通过javax.xml.namespace.QName.QName(String namespaceURI, String localPart)),如果没有portName属性集,它会选择使用serviceInterface属性。

portNameserviceInterface属性实际上是不同的值。 portName被设置为WSDL中定义的<port name=""/>,这可能是不正确的事情。使用QName localPart参数的接口类名​​最终是我的修复,但更好的portName参数也可能解决问题。