webservice 联调问题,急200分求助

ladybirds2008 2012-04-24 09:55:06
我用下面这个调用一个webservice,但这个webservice是调用dcn网的一个webservice,我现在要在公网调用我自己的这个webservice ,报了异常:

/**
* 调用webservice
*
* @param url
* URL地址
* @param method
* 调用的方法名称
* @param paramName
* 传递的参数名称
* @param param
* 传递的参数
* @return 未解析的XML字符串
*/
@Override
public String callWebService(String url, String method, String paramName, String param)
{
String resultStr = null;

logger.info("调用webservice 参数为:param=" + param);
try
{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(url));
// 设置要调用哪个方法
//call.setOperationName(method);
call.setOperationName(new QName("http://testspeed.com",method));
// 设置要传递的参数
call.addParameter(new QName("http://testspeed.com",paramName), XMLType.XSD_STRING, ParameterMode.IN);
// 要返回的数据类型(自定义类型)
call.setReturnType(XMLType.XSD_STRING);// (标准的类型)
//call.setUseSOAPAction(true);
//call.setSOAPActionURI(method);
// 调用方法并传递参数
String result = (String) call.invoke(new Object[] { param });
if (logger.isDebugEnabled())
{
logger.debug("调用webservice 返回结果为:" + result);
}
}
catch (MalformedURLException e)
{}
catch (ServiceException e)
{}
catch (RemoteException e)
{}
return resultStr;
}

java 代码
/**
* 根据客户端IP获得用户账号
*
* @param param
* XML格式的参数
* @return 未解析的XML报文
*/
public String getAccessNum(String param)
{
// url
String url = "http://25.24.29.18:8190/obs-auth/webservice/OBSInterfaceForAuth?wsdl";
// 要调用方法
String method = "AuthIP";
// 参数名称
String paramName = "AuthIPRequest";
// 请求webservice
String result = callWebService(url, method, paramName, param);
return result;
}
/**
* 调用webservice
*
* @param url
* URL地址
* @param method
* 调用的方法名称
* @param paramName
* 传递的参数名称
* @param param
* 传递的参数
* @return 未解析的XML字符串
*/
private String callWebService(String url, String method, String paramName,
String param)
{
String resultStr = null;
try
{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(url));
// 设置要调用哪个方法
call.setOperationName(method);
// 设置要传递的参数
call.addParameter(paramName, XMLType.XSD_STRING, ParameterMode.IN);
// 要返回的数据类型(自定义类型)
call.setReturnType(XMLType.XSD_STRING);// (标准的类型)
call.setUseSOAPAction(true);
call.setSOAPActionURI(method);
// 调用方法并传递参数
resultStr = (String) call.invoke(new Object[] { param });
}
catch (MalformedURLException e)
{}
catch (ServiceException e)
{}
catch (RemoteException e)
{}
return resultStr;
}

services.xml

<?xml version="1.0" encoding="UTF-8"?>
<service name="fromCRM/user/CallUser">
<description>
TestSpeed CallUser
</description>
<parameter name="ServiceClass">
com.testspeed.CallUser
</parameter>
<operation name="getAccessNum">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="getUserMess">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>

...全文
326 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ladybirds2008 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
以前出现过楼主的问题
记得好像是换jar解决的
试试老版本的
备份好项目哦,好久的问题了不敢确认
http://download.csdn.net/detail/flyinsky191/3880744
再不行把
commons-discovery换成0.4的试试

太长时间了,死马当活马医,先试试吧
[/Quote]
果然 是commons-discovery jar包问题。。。
我换了版本 就可以了。。。
facome 2012-05-03
  • 打赏
  • 举报
回复
楼主 是 高手 解决的时候 分享 替你顶一个
mazhai 2012-04-30
  • 打赏
  • 举报
回复
lz解决没呀??
quhuafeng521 2012-04-24
  • 打赏
  • 举报
回复
你DEBUG一下程序。看看走到哪报错了。再看看那个JAR包有没有
ladybirds2008 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你这个是JAR包有问题吧。。。
[/Quote]
详细说下呢。。谢谢
quhuafeng521 2012-04-24
  • 打赏
  • 举报
回复
你这个是JAR包有问题吧。。。
ladybirds2008 2012-04-24
  • 打赏
  • 举报
回复
求高手 指教啊 !!!
ladybirds2008 2012-04-24
  • 打赏
  • 举报
回复

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
faultSubcode:
faultString: org/apache/commons/discovery/tools/DiscoverSingleton
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org/apache/commons/discovery/tools/DiscoverSingleton
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)

mazhai 2012-04-24
  • 打赏
  • 举报
回复
推荐楼主用jdk1.6自带的webservice去搭建呗,实现还方便
mazhai 2012-04-24
  • 打赏
  • 举报
回复
以前出现过楼主的问题
记得好像是换jar解决的
试试老版本的
备份好项目哦,好久的问题了不敢确认
http://download.csdn.net/detail/flyinsky191/3880744
再不行把
commons-discovery换成0.4的试试

太长时间了,死马当活马医,先试试吧
  • 打赏
  • 举报
回复
不懂啊楼主是高手

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧