org.apache.axis2.AxisFault:错误,麻烦各位帮忙看下!

ericericwang 2010-07-20 11:23:43
具体的错误信息如下:
org.apache.axis2.AxisFault: A required header representing a Message Addressing Property is not present

错误产生的场景:
我用同一WSDL文件生成的服务端和客户端,用客户端调服务端时报的错,DEBUG跟进去调试,发现参数都有,只是在向服务端发请求的那个方法那出的错,方法如下:(具体出错的地方我标记成红色了)


package com.chinamobile.www.vgop.serviceorder.v1_0;
import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;
import org.apache.axis2.transport.http.HTTPConstants;
import com.chinamobile.www.vgop.serviceorder.v1_0_sub.OrderServiceStub;
import com.chinamobile.www.vgop.serviceorder.v1_0_sub.OrderServiceStub.SyncOrderRelationCfmResponse;

public class TaskObject implements Runnable
{

private MsgHeaderClient msgHeaderClient = null;

public MsgHeaderClient getMsgHeaderClient()
{
return msgHeaderClient;
}

public void setMsgHeaderClient(MsgHeaderClient msgHeaderClient)
{
this.msgHeaderClient = msgHeaderClient;
}

public void run()
{
try
{
//睡眠1s,防止任务添加进来就执行,导致服务端还没有响应的时候就任务就已经执行了。
Thread.sleep(1000L);
}
catch (InterruptedException e2)
{
e2.printStackTrace();
}
OrderServiceStub stub = null;
try
{
stub = new OrderServiceStub("http://10.40.55.23:8080/bmp/services/OrderService");
}
catch (AxisFault e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1600000);

OrderServiceStub.SyncOrderRelationCfmReq req = new OrderServiceStub.SyncOrderRelationCfmReq();

OrderServiceStub.SyncOrderRelationCfm syncOrderRelationCfm = new OrderServiceStub.SyncOrderRelationCfm();

// 开户
SyncOrderRelationCfmResponse syncOrderRelationCfmResp =
new OrderServiceStub.SyncOrderRelationCfmResponse();

req.setMsgTransactionID(msgHeaderClient.getTransactionID().getTransactionID());
req.setCfmResult(msgHeaderClient.getProcResult());
syncOrderRelationCfm.setSyncOrderRelationCfmReq(req);

try
{
syncOrderRelationCfmResp =
stub.syncOrderRelationCfm(syncOrderRelationCfm,
msgHeaderClient.getMsgName(),
msgHeaderClient.getTransactionID(),
msgHeaderClient.getVersion(),
msgHeaderClient.getSendAddress(),
msgHeaderClient.getDestAddress(),
msgHeaderClient.getOriginalAddress(),
msgHeaderClient.getTimeStamp());
}
catch (RemoteException e)
{
e.printStackTrace();
}

System.out.println(syncOrderRelationCfmResp.getSyncOrderRelationCfmResp().getResult());

msgHeaderClient = null;
}

}
...全文
1605 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ericericwang 2010-07-21
  • 打赏
  • 举报
回复
··········没人理啊 !大侠们帮忙看下啊!
ericericwang 2010-07-20
  • 打赏
  • 举报
回复
应该是没错的,我在IE里面访问的了,是可以访问的到的。
牛叔 2010-07-20
  • 打赏
  • 举报
回复
你看你调用是不是有错
web服务发布出来一般不会有错吧
ericericwang 2010-07-20
  • 打赏
  • 举报
回复
而且我的代码现在都是用AXIS2生成的。
ericericwang 2010-07-20
  • 打赏
  • 举报
回复
你估计这个错有没有可能是跟WSDL文件本身有问题啊?
牛叔 2010-07-20
  • 打赏
  • 举报
回复
很久以前是这样调的
TDSWebServiceLocator tdsLocator = new TDSWebServiceLocator();
TDSWebServiceSoap tds = (TDSWebServiceSoap12Stub)tdsLocator.getTDSWebServiceSoap12() ;;
result = tds.queryID(domain, username, password, id, port, DN);
牛叔 2010-07-20
  • 打赏
  • 举报
回复
没看到红色的地方啊
ericericwang 2010-07-20
  • 打赏
  • 举报
回复
忘记标记出错的地方了!呵呵 补下!

package com.chinamobile.www.vgop.serviceorder.v1_0;
import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;
import org.apache.axis2.transport.http.HTTPConstants;
import com.chinamobile.www.vgop.serviceorder.v1_0_sub.OrderServiceStub;
import com.chinamobile.www.vgop.serviceorder.v1_0_sub.OrderServiceStub.SyncOrderRelationCfmResponse;

public class TaskObject implements Runnable
{

private MsgHeaderClient msgHeaderClient = null;

public MsgHeaderClient getMsgHeaderClient()
{
return msgHeaderClient;
}

public void setMsgHeaderClient(MsgHeaderClient msgHeaderClient)
{
this.msgHeaderClient = msgHeaderClient;
}

public void run()
{
try
{
//睡眠1s,防止任务添加进来就执行,导致服务端还没有响应的时候就任务就已经执行了。
Thread.sleep(1000L);
}
catch (InterruptedException e2)
{
e2.printStackTrace();
}
OrderServiceStub stub = null;
try
{
stub = new OrderServiceStub("http://10.40.55.23:8080/bmp/services/OrderService");
}
catch (AxisFault e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1600000);

OrderServiceStub.SyncOrderRelationCfmReq req = new OrderServiceStub.SyncOrderRelationCfmReq();

OrderServiceStub.SyncOrderRelationCfm syncOrderRelationCfm = new OrderServiceStub.SyncOrderRelationCfm();

// 开户
SyncOrderRelationCfmResponse syncOrderRelationCfmResp =
new OrderServiceStub.SyncOrderRelationCfmResponse();

req.setMsgTransactionID(msgHeaderClient.getTransactionID().getTransactionID());
req.setCfmResult(msgHeaderClient.getProcResult());
syncOrderRelationCfm.setSyncOrderRelationCfmReq(req);

try
{
syncOrderRelationCfmResp =
stub.syncOrderRelationCfm(syncOrderRelationCfm,
msgHeaderClient.getMsgName(),
msgHeaderClient.getTransactionID(),
msgHeaderClient.getVersion(),
msgHeaderClient.getSendAddress(),
msgHeaderClient.getDestAddress(),
msgHeaderClient.getOriginalAddress(),
msgHeaderClient.getTimeStamp());
}
catch (RemoteException e)
{
e.printStackTrace();
}

System.out.println(syncOrderRelationCfmResp.getSyncOrderRelationCfmResp().getResult());

msgHeaderClient = null;
}

}

67,512

社区成员

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

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