axis2 传递javabean的问题

xiajiejavaxiajiejava 2008-06-16 08:36:20
org.apache.axis2.AxisFault: com.axis2.servicedatatransfer4sp.ServiceDataTransfer4SPReq
<---上面的“ServiceDataTransfer4SPReq ”是我的javabean,只是一个最普通的javabean。。。
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:548)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at com.axis2.servicedatatransfer4sp.HttpTest4sp.main(HttpTest4sp.java:354)


==========我的客户端(服务器端是对方提供的)=========
ServiceDataTransfer4SPReq man=new ServiceDataTransfer4SPReq();
man.setDataType("0000");
man.setSendData("0000");
man.setSendTime("0000");
man.setServiceId("0000");
man.setSpId("0000");
man.setUa("0000");


try
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://218.206.83.19:7080/services/SPDataTransferManagerImpl.SPDataTransferManagerImplHttpSoap11Endpoint?wsdl");
options.setTo(targetEPR);

QName sendPersonInfo = new QName("http://impl.sp.supermarket.aspire.com", "serviceDataTransfer4SP");
Class[] returnTypes = new Class[] { ServiceDataTransfer4SPRsp.class };
Object[] opSendInfo = new Object[] { man};
Object[] response = serviceClient.invokeBlocking(sendPersonInfo, opSendInfo, returnTypes);
ServiceDataTransfer4SPRsp result = (ServiceDataTransfer4SPRsp) response[0];
System.out.println(result.getResultCode());

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

调用对方的服务器端的时候是这个错误,请问是哪里的问题
...全文
476 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
weidong0088 2011-11-02
  • 打赏
  • 举报
回复
顶一下,我刚刚学这个东西,要传一个普通对象过去的时候,也会有你这个问题,期待有高手回答一下。
  • 打赏
  • 举报
回复
继续帮忙顶一下 千万别沉底了、。、、、还没结束呢。。。
gyf82414 2008-06-18
  • 打赏
  • 举报
回复
帮忙顶一下 千万别沉底了、。、、、还没结束呢。。。
dadi5566 2008-06-18
  • 打赏
  • 举报
回复
你实在客户端调用的时候出错了对吧,你看看将创建的javaBean的class有没有添加到你的客户端工程中
yctang 2008-06-16
  • 打赏
  • 举报
回复
没有序列化,
axis2的我没有
  • 打赏
  • 举报
回复
这样不行呀。。。
还是有错误


AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: No serializer found for class com.axis2.servicedatatransfer4sp.ServiceDataTransfer4SPReq in registry org.apache.axis.encoding.TypeMappingDelegate@341960
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.io.IOException: No serializer found for class com.axis2.servicedatatransfer4sp.ServiceDataTransfer4SPReq in registry org.apache.axis.encoding.TypeMappingDelegate@341960
at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:315)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:530)
at org.apache.axis.SOAPPart.getContentLength(SOAPPart.java:229)
at org.apache.axis.Message.getContentLength(Message.java:510)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:371)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.axis2.servicedatatransfer4sp.HttpTest4sp.main(HttpTest4sp.java:416)
  • 打赏
  • 举报
回复
页不行
axis2的服务器端能被axis调用吗?

有没有axis2的方法。。。。
  • 打赏
  • 举报
回复
我去试试
yctang 2008-06-16
  • 打赏
  • 举报
回复
可以试着这么写:传的是bean对象

static org.apache.axis.description.OperationDesc [] _operations;

static {
_operations = new org.apache.axis.description.OperationDesc[1];
_initOperationDesc1();
}

private static void _initOperationDesc1(){
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("方法名");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("http://**", "serviceDataTransfer4SP"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://**", ">serviceDataTransfer4SP"),com.axis2.servicedatatransfer4sp.ServiceDataTransfer4SPReq.class, false, false);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName("http://***", ">serviceDataTransfer4SP"));
oper.setReturnClass(com.axis2.servicedatatransfer4sp.ServiceDataTransfer4SPReq.class);
oper.setReturnQName(new javax.xml.namespace.QName("http://***", "serviceDataTransfer4SP"));
oper.setStyle(org.apache.axis.constants.Style.DOCUMENT);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
_operations[0] = oper;

}

public static void main(String[] args) {
Service service = new Service();
org.apache.axis.client.Call _call = (org.apache.axis.client.Call)service.createCall();
_call.setTargetEndpointAddress("*****?wsdl");
_call.setOperation(_operations[0]);
_call.setOperationName(new javax.xml.namespace.QName("", "方法名"));
Object[] response = call.invoke(new java.lang.Object[] {man});

}
  • 打赏
  • 举报
回复
不行呀
服务端指定的要接收一个名称为“ServiceDataTransfer4SPRsp”的javabean对象。。。。
yctang 2008-06-16
  • 打赏
  • 举报
回复
可以换一种方式调用,比如:

String method = "hw";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL("http://localhost:8080/axis2/services/Hello"));
call.setOperationName(new QName("http://com/", method));
call.setUseSOAPAction(true);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setSOAPActionURI("http://com/GetServerList");
String k = (String)call.invoke(new Object[]{}); //因为返回值是String类型,所以这里调用的返回值也是String类型
System.out.println(">>> "+k); //返回值输出
  • 打赏
  • 举报
回复
对方用的是axis2.。。。我有什么办法。。。
yctang 2008-06-16
  • 打赏
  • 举报
回复
我是用axis,不是axis2
  • 打赏
  • 举报
回复
谁能给一段具体的代码??????或者解决方案?
  • 打赏
  • 举报
回复
这个不会用呀。。。。。。
我的MyEclipse生成的客户端代码全是xfire的
我不会生成axis2的客户端
  • 打赏
  • 举报
回复
这样写页没用呀。。。
一样的错误
yctang 2008-06-16
  • 打赏
  • 举报
回复
根据wsdl生成客户端代码就行啦,不需要自己写代码的
  • 打赏
  • 举报
回复
没用。。。。还是一样的错误。。。。。咋整?
tavor 2008-06-16
  • 打赏
  • 举报
回复

EndpointReference targetEPR = new EndpointReference("http://218.206.83.19:7080/services/SPDataTransferManagerImpl.SPDataTransferManagerImplHttpSoap11Endpoint?wsdl");

应该是下面这样吧

EndpointReference targetEPR = new EndpointReference("http://218.206.83.19:7080/services/SPDataTransferManagerImpl.SPDataTransferManagerImplHttpSoap11Endpoint");
  • 打赏
  • 举报
回复
会是什么问题呢?

我的javabean和对方的javabean不在同一个包下? 我用了同一个包路径也没用
javabean的大小写页一样
可就是过不去。。。。。
想不到还能修改什么。。。。
加载更多回复(18)

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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