我正在使用 weblogic 工作管理器从我的 web 服务向调用外部 websservice 的 EJB(在同一只耳朵内)进行调用。
如果我拨打 1 电话,它总是可以正常工作,所以我知道调用服务的设置是正确的......
但是,一旦我向它添加另一个调用,它有时会失败(从 EJB 到 Web 服务),在 EJB 到外部 Web 服务调用上出现这个异常(我添加到工作管理器的调用越多,它失败的次数就越多)
org.springframework.remoting.RemoteAccessException: Could not access remote service [SomeServicePort]; nested exception is java.net.MalformedURLException
at org.springframework.remoting.rmi.RmiClientInterceptorUtils.convertRmiAccessException(RmiClientInterceptorUtils.java:190)
at org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.handleRemoteException(JaxRpcPortClientInterceptor.java:737)
at org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.doInvoke(JaxRpcPortClientInterceptor.java:595)
at org.springframework.remoting.jaxrpc.JaxRpcPortClientInterceptor.invoke(JaxRpcPortClientInterceptor.java:562)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy112.obtainClinicalCode(Unknown Source)
...
Caused by: java.net.MalformedURLException
at java.net.URL.<init>(URL.java:601)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:133)
...
我的服务在我的应用程序上下文中的 Spring (2.5) 中配置如下
<bean id="MyService"
class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean"
lazy-init="true" scope="prototype">
<property name="serviceFactoryClass">
<value>org.apache.axis.client.ServiceFactory</value>
</property>
<property name="wsdlDocumentUrl">
<value>myWSDLPath...</value>
</property>
<property name="namespaceUri">
<value>com.controller</value>
</property>
<property name="serviceName">
<value>Mine</value>
</property>
<property name="portName">
<value>MinePort</value>
</property>
<property name="portInterface">
<value>com.MineServiceRemote</value>
</property>
<property name="serviceInterface">
<value>com.MineService</value>
</property>
<property name="lookupServiceOnStartup" value="false" />
</bean>
我正在使用 Java 5 和 Weblogic 10。我在从 EJB 调用外部 Web 服务之前和之后添加了日志记录:我可以看到通过工作管理器对 EJB 进行了多次调用。但在 EJB 内部,它似乎抛出了异常。只是为了隔离工作管理器设置是否有任何问题,但这似乎很好。
问题似乎在于 EJB 调用外部 Web 服务。
为什么并发调用会出现此错误,但一次不会出现 1 个?