我们的程序要调用另一个公司的一个接口,之间传递数据是采用xml的方法,我们这边取数据是用这个代码
其中的call是org.apache.axis.client下的,以前我们的中间件是webshere,tomcat倒没发现什么异常,后来换成weblogic后,我们就怎么也取不到数据,但是再开发模式下就好用。
一步一步的跟踪发现是在这
xmlReturn = (String) call.invoke(new Object[] { requestContent });
出现问题。
查看错误日值发现是和weblogic的webserver相冲突了。
解决的方法有2种:
<
container-descriptor
>
<
prefer-web-inf-classes
>
true
</
prefer-web-inf-classes
>
</
container-descriptor
>
<!
DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls610/dtd/weblogic-web-jar.dtd"
>
<
weblogic-web-app
>
<
jsp-descriptor
>
<
jsp-param
>
<
param-name
>
compileFlags
</
param-name
>
<
param-value
>
-g
</
param-value
>
</
jsp-param
>
<
jsp-param
>
<
param-name
>
keepgenerated
</
param-name
>
<
param-value
>
true
</
param-value
>
</
jsp-param
>
</
jsp-descriptor
>
<
container-descriptor
>
<
prefer-web-inf-classes
>
true
</
prefer-web-inf-classes
>
</
container-descriptor
>
<
charset-params
>
<
input-charset
>
<
resource-path
>
/*
</
resource-path
>
<
java-charset-name
>
GBK
</
java-charset-name
>
</
input-charset
>
</
charset-params
>
<
context-root
>
/bdsc
</
context-root
>
</
weblogic-web-app
>
1
String wsURL
=
AppConst.KKSUrl;
2
Service service
=
new
Service();
3
Call call
=
(Call) service.createCall();
4
call.setOperationName(
new
QName(wsURL,
"
getCodePowerNet
"
));
5
call.setTargetEndpointAddress(
new
URL(wsURL));
6![None.gif](/Images/OutliningIndicators/None.gif)
7
String requestContent
=
getSimulatedXMLData();
8![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
xmlReturn
=
(String) call.invoke(
new
Object[]
{ requestContent }
);
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![None.gif](/Images/OutliningIndicators/None.gif)
8
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](/Images/dot.gif)
其中的call是org.apache.axis.client下的,以前我们的中间件是webshere,tomcat倒没发现什么异常,后来换成weblogic后,我们就怎么也取不到数据,但是再开发模式下就好用。
一步一步的跟踪发现是在这
xmlReturn = (String) call.invoke(new Object[] { requestContent });
出现问题。
查看错误日值发现是和weblogic的webserver相冲突了。
解决的方法有2种:
1. 配置weblogic.xml,强制weblogic首先加载应用WEB-INF中的class
2. 修改startweblogic.cmd,将axis下的saaj.jar的路径放在weblogic的webservices.jar之前。
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
不过这段代码加进去要注意先后顺序
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)