我在web project中成功发布了web service,在网页中访问自己发布的链接是能看见wsdl文件内容的,但是我在客户端调用的时候出了问题,老是报这个错误,不知道怎么回事,望高手指点...
org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method createVM
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at wsdl.MyServiceStub.createVM(MyServiceStub.java:182)
at test.ClientTest.main(ClientTest.java:69)axis2

解决方案 »

  1.   

    LZ试试在客户端增加options.setAction("方法名"),有些时候,访问AXIS2是要加这个
      

  2.   

    第一次用axis2,经验不是很丰富,望高手指点指点卡了好长时间了
      

  3.   

    这是我的客户端代码,MyServiceStub 是根据wsdl文件生成客户端存根的
    public static void main(String[] args)
    {
    String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
    String axis2xml = Thread.currentThread().getContextClassLoader().getResource("axis2.xml").getPath();
    String webServiceAddress = "http://localhost:8888/GENEXSpaceSinglecloud/services/myService?wsdl";
    try 
    {
    ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(path, axis2xml);
    MyServiceStub stub = new MyServiceStub(configContext, webServiceAddress);
    stub._getServiceClient().getOptions().setAction("createVM");
    stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(60000);

    CreateVM createVM = new CreateVM();
    CreateVMType createType = new CreateVMType();
    CreateVmRequest createVmRequest = new CreateVmRequest();
    createVmRequest.setJsonStr("{success:'true'}");
    createVM.setCreateVM(createType);

    CreateVMResponse response = stub.createVM(createVM);
    System.out.println(response.toString());

    catch (AxisFault e) 
    {
    e.printStackTrace();

    catch (RemoteException e) 
    {
    e.printStackTrace();
    }
      

  4.   

    LZ你的客户端是用那个WSDL生成的存根(STUB)的吧?试试用RPC方法访问下,在RPC方法里加options.setAction("方法名"),这问题我之前工作中也遇到过.
      

  5.   

    你的意思是这么调用
    RPCServiceClient serviceClient = new RPCServiceClient();
    // Options options = serviceClient.getOptions();
    // EndpointReference targetEPR = new EndpointReference(url);
    // options.setTo(targetEPR);
    //
    // QName opAddEntry = new QName("http://rmi.ccc.bbb.aaa.com", method);
    //  
    // Object[] opAddEntryArgs = new Object[] {request};
    //  
    // res = serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, new Class[] { Response.class })[0];
    // System.out.println(res);
    这样是可以调用到服务端代码的,但是返回报错
      

  6.   

    LZ看下服务端那边,加一些日志,如果有显示,证明调用OK了,至于说返回值出错,这个要LZ你再看看返回值相关类了