javax.xml.ws.WebServiceException: 关闭方法已经被调用
javax.xml.ws.WebServiceException: close method has already been invoked
我想为 WebService 实现一个客户端。我使用 IntelliJ 工具从 wsdl 创建 类,并根据需要准备了所有 类 以从 WebService 接口调用方法。问题是每次我尝试调用 WebService 方法时都会收到此错误:
javax.xml.ws.WebServiceException: close method has already been invoked
at com.sun.xml.ws.client.Stub.process(Stub.java:316)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
at com.sun.proxy.$Proxy163.test(Unknown Source)
at com.webapp.svc.ws.client.omscentraldatasending.OmsCentralDataSendingWsClient.test(OmsCentralDataSendingWsClient.java:58)
我在 SoapUI 上有一个模拟 运行,我从 SoapUI 发送了一个请求,它正在运行。
测试 WebService 是从按下网页中的按钮开始的。这就是我在上下文中初始化 bean 的方式:
<bean id="omsCentralDataSendingSvc" class="com.bean.omscentraldatasending.OmsCentralDataSendingSvc">
<constructor-arg value="classpath:/META-INF/wsdl/omscentraldatasending/OmsCentralDataSendingSvc.wsdl"/>
</bean>
<bean id="omsCentralDataSendingTest" class="com.webapp.web.adm.omscentraldatasendingtest.OmsCentralDataSendingTest" scope="request">
<property name="omsCentralDataSendingClient">
<bean class="com.webapp.svc.ws.client.omscentraldatasending.OmsCentralDataSendingWsClient" init-method="init">
<property name="webServicePort">
<bean factory-bean="omsCentralDataSendingSvc" factory-method="getOmsCentralDataSendingEndpoint" />
</property>
<property name="endpointAddress" value="http://localhost:9520/OmsCentralDataSendingSvc/"/>
</bean>
</property>
</bean>
我意识到在某个时候调用了com.sun.xml.ws.client.Stub#close
方法,这就是为什么后来出现错误的原因,但我不知道为什么调用close
方法。
如果您需要任何其他信息,请告诉我。
显然问题出在初始化 bean 上。我移动了嵌套的 bean 并将其设为顶层,现在可以正常工作了。
<bean id="omsCentralDataSendingSvc" class="com.bean.omscentraldatasending.OmsCentralDataSendingSvc">
<constructor-arg value="classpath:/META-INF/wsdl/omscentraldatasending/OmsCentralDataSendingSvc.wsdl"/>
</bean>
<bean id="newBean" class="com.webapp.svc.ws.client.omscentraldatasending.OmsCentralDataSendingWsClient" init-method="init">
<property name="webServicePort">
<bean factory-bean="omsCentralDataSendingSvc" factory-method="getOmsCentralDataSendingEndpoint" />
</property>
<property name="endpointAddress" value="http://localhost:9520/OmsCentralDataSendingSvc/"/>
</bean>
<bean id="omsCentralDataSendingTest" class="com.webapp.web.adm.omscentraldatasendingtest.OmsCentralDataSendingTest" scope="request">
<property name="omsCentralDataSendingClient" ref="newBean">
</bean>
我想为 WebService 实现一个客户端。我使用 IntelliJ 工具从 wsdl 创建 类,并根据需要准备了所有 类 以从 WebService 接口调用方法。问题是每次我尝试调用 WebService 方法时都会收到此错误:
javax.xml.ws.WebServiceException: close method has already been invoked
at com.sun.xml.ws.client.Stub.process(Stub.java:316)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
at com.sun.proxy.$Proxy163.test(Unknown Source)
at com.webapp.svc.ws.client.omscentraldatasending.OmsCentralDataSendingWsClient.test(OmsCentralDataSendingWsClient.java:58)
我在 SoapUI 上有一个模拟 运行,我从 SoapUI 发送了一个请求,它正在运行。
测试 WebService 是从按下网页中的按钮开始的。这就是我在上下文中初始化 bean 的方式:
<bean id="omsCentralDataSendingSvc" class="com.bean.omscentraldatasending.OmsCentralDataSendingSvc">
<constructor-arg value="classpath:/META-INF/wsdl/omscentraldatasending/OmsCentralDataSendingSvc.wsdl"/>
</bean>
<bean id="omsCentralDataSendingTest" class="com.webapp.web.adm.omscentraldatasendingtest.OmsCentralDataSendingTest" scope="request">
<property name="omsCentralDataSendingClient">
<bean class="com.webapp.svc.ws.client.omscentraldatasending.OmsCentralDataSendingWsClient" init-method="init">
<property name="webServicePort">
<bean factory-bean="omsCentralDataSendingSvc" factory-method="getOmsCentralDataSendingEndpoint" />
</property>
<property name="endpointAddress" value="http://localhost:9520/OmsCentralDataSendingSvc/"/>
</bean>
</property>
</bean>
我意识到在某个时候调用了com.sun.xml.ws.client.Stub#close
方法,这就是为什么后来出现错误的原因,但我不知道为什么调用close
方法。
如果您需要任何其他信息,请告诉我。
显然问题出在初始化 bean 上。我移动了嵌套的 bean 并将其设为顶层,现在可以正常工作了。
<bean id="omsCentralDataSendingSvc" class="com.bean.omscentraldatasending.OmsCentralDataSendingSvc">
<constructor-arg value="classpath:/META-INF/wsdl/omscentraldatasending/OmsCentralDataSendingSvc.wsdl"/>
</bean>
<bean id="newBean" class="com.webapp.svc.ws.client.omscentraldatasending.OmsCentralDataSendingWsClient" init-method="init">
<property name="webServicePort">
<bean factory-bean="omsCentralDataSendingSvc" factory-method="getOmsCentralDataSendingEndpoint" />
</property>
<property name="endpointAddress" value="http://localhost:9520/OmsCentralDataSendingSvc/"/>
</bean>
<bean id="omsCentralDataSendingTest" class="com.webapp.web.adm.omscentraldatasendingtest.OmsCentralDataSendingTest" scope="request">
<property name="omsCentralDataSendingClient" ref="newBean">
</bean>