我正在使用weblogic工作管理器从我的webservice调用一个调用外部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内部似乎抛出异常。只是为了隔离workmanager设置是否有任何问题,但似乎没问题。
问题似乎在于EJB调用外部Web服务。
为什么我会在并发呼叫时收到此错误,但一次不会收到1错误?
答案 0 :(得分:0)
问题在于我的bean在spring config中被定义了。
不是像我那样定义它,而是将WSDL保存到我的项目中,并使用我的POM中定义的WSDL2Code为我生成存根
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>1.5.4</version>
<executions>
<execution>
<id>myWebService</id>
<goals>
<goal>wsdl2code</goal>
</goals>
<configuration>
<packageName>PackageWhereIWantTheCodeToBeGeneratedTo</packageName>
<wsdlFile>${project.basedir}/src/main/resources/pathToWhereMyWsdlIsSavedInMyProject</wsdlFile>
<databindingName>jaxbri</databindingName>
<syncMode>sync</syncMode>
<generateTestcase>false</generateTestcase>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-jaxbri</artifactId>
<version>1.5.4</version>
</dependency>
</dependencies>
</plugin>
然后在我的代码中,我创建了一个新存根并调用为我生成的方法