axia2框架 关于wsdl文件操作 服务-客户端之间的建立


1、在本工程下新建一个类,用于生成wsdl文件:
2、把class文件(带上文件目录)放到axis2的bin目录下,执行生成wsdl的bat命令。(编译后的---在tomcat底下找,然后在axia2的bin目录下,打开cmd,进行以下命令操作)
样例:
java2wsdl -cp ChnlAgentSignRemainImpl.class -cn com.asiainfo.webservices.ChnlAgentSignRemainImpl -classpath "D:\software\axis2-1.4.1\bin" -of ChnlAgentSignRemainImpl.wsdl
(补充:这里的com.asiainfo.webservices.ChnlAgentSignRemainImpl意思是将.class文件放置axia2的bin目录下的com.asiainfo.webservices路径下-此时需要自己创建这个目录,可以自己自定义路径
       这里的ChnlAgentSignRemainImpl.wsdl意思是生成你想生成对应的.wsdl文件
)
3、得到wsdl文件(注意文件大小不为0kb,否则以上步骤不成功)后,再基于wsdl文件生成axis2框架下的服务端/客户端实现类(在axia2的bin目录下,打开cmd,进行以下命令操作)
样例:
wsdl2java -uri ChnlAgentSignRemainImpl.wsdl -ss -ssi -sd -g -o ChnlAgentSignRemain
( 这里的ChnlAgentSignRemainImpl.wsdl 为2步骤生成的wsdl文件,ChnlAgentSignRemain为新建立的文件夹,命令自己会执行)

4、再将该类生成对应的stub结尾的类(在axia2的bin目录下,打开cmd,进行以下命令操作):
样例:wsdl2java -uri ChnlAgentSignRemainImpl.wsdl -p ChnlAgentSignRemainImpl -s -o stub (用于本地的)
      wsdl2java -uri ChnlAgentSignRemainImpl -p http://10.185.14.22:9090/com.asiainfo.webservices/ChnlAgentSignRemainImpl?wsdl  -s -o stub (用于线上的、联调的)
      
(补充:这里的ChnlAgentSignRemainImpl.wsdl为2步骤生成对应的.wsdl文件,ChnlAgentSignRemainImpl -s -o stub表示建立以Stub结尾命名的ChnlAgentSignRemainImpl类,即ChnlAgentSignRemainImplStub,
并存放在stub文件中)

5、打开3中生成的ChnlAgentSignRemain文件,将com底下的文件复制到自己工程对应的路径中
6、在eclipse工程中,在项目的 /WebRoot/WEB-INF/services底下创建一个文件夹,在该文件底下创建 META-INF 文件夹,将3中生成的ChnlAgentSignRemain文件下resources文件夹底下的.xml文件和.wsdl文件放在
 META-INF下,启动项目时,会自动扫描

7、首先要启动 整个工程,在浏览器上输入http://localhost:8083/GXMCC_ChannelSupport2/services/MaterialRequisitionService?wsdl 
(补充:GXMCC_ChannelSupport2为工程名称,services为/WebRoot/WEB-INF/services中的services路径,MaterialRequisitionService为该路径下 META-INF中的.wsdl文件)
若浏览器*问成功,则可以进行本地测试,试着调用自己在1步骤中创建的方法;

axia2框架 关于wsdl文件操作 服务-客户端之间的建立

8、接下来是Main函数测试,验证是否能调起服务:

在stub文件中,创建main函数:

axia2框架 关于wsdl文件操作 服务-客户端之间的建立


    
public static void main(String[] args) {
        
        
        try {
            System.out.println("******");
            ChnlAgentSignRemainImplStub stub = new ChnlAgentSignRemainImplStub("http://localhost:8083/GXMCC_ChannelSupport2/services/ChnlAgentSignRemainImpl");
            OI_SubmitContract  oI_SubmitContract14 = new OI_SubmitContract();
            com.asiainfo.webservices.xsd.ChnlAgentSignRemainParam contractParam = new com.asiainfo.webservices.xsd.ChnlAgentSignRemainParam();
            contractParam.setChange_id(111);
            contractParam.setOp_type("add");
            contractParam.setChnl_name("test111");
            
            oI_SubmitContract14.setParam(contractParam);
            
            
            ChnlAgentSignRemainImplSkeleton skeleton = new ChnlAgentSignRemainImplSkeleton();
            skeleton.OI_SubmitContract(oI_SubmitContract14).get_return();
            
//            OI_SubmitContractResponse res = stub.OI_SubmitContract(oI_SubmitContract14);
                
            
            
            System.out.println("---res.code--"+skeleton.OI_SubmitContract(oI_SubmitContract14).get_return());            
        } catch (AxisFault e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    
    }

axia2框架 关于wsdl文件操作 服务-客户端之间的建立

接下来让我们看下生成的逻辑层内部是怎么样的

axia2框架 关于wsdl文件操作 服务-客户端之间的建立

 

运行main函数:看是否能调动:

axia2框架 关于wsdl文件操作 服务-客户端之间的建立

成功!输出结果将 逻辑层内部 抛异常部分 输出来了。