采用axis创建web service

采用axis创建web service
1.安装axis,下载axis,将saaj.jar,jaxrpc.jar,axis.jar,commons-discovery-0.2.jar,
 commons-logging-api.jar,log4j-1.2.8.jar,wsdl4j-1.5.1.jar,activation.jar,
 mailapi.jar文件复制到tomcat的common/lib下,并加到classpath中
2.编写webservice服务
public class smsServer {

    public int Send(Message msg)
    {
     ...
    }
    public Message[] Recv()
    {
       ...
    }
    public SendState[] CheckSate(String SubmitIDs)
    {
        ...
    }
}
   
3.编写wsdd发布
 先编写wsdd文件,然后执行java org.apache.axis.client.AdminClient -lhttp://localhost:8080/SXDL_SMS/services/AdminService deploy.wsdd发布生成server-config.wsdd文件
4.生成wsdl
 java org.apache.axis.wsdl.Java2WSDL -oWebsms.wsdl -lhttp://localhost:8080/SXDL_SMS/services/ -nWebsms zxsms.webservice.smsServer  
5.生成客户端文件
 java org.apache.axis.wsdl.WSDL2Java Websms.wsdl -p zxsms.webclient
6.客户端注册自定义结构,由于我采用的是自定义接口,因此客户端需要注册示例如下
    public int send(zxsms.webclient.Message msg) throws java.rmi.RemoteException {
        if (super.cachedEndpoint == null) {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();
        javax.xml.namespace.QName qn=new javax.xml.namespace.QName("MessageBean", "MessageBean");
        _call.registerTypeMapping(Message.class, qn,               
                new org.apache.axis.encoding.ser.BeanSerializerFactory(Message.class, qn),       
                new org.apache.axis.encoding.ser.BeanDeserializerFactory(Message.class, qn));
        _call.setOperation(_operations[0]);
        _call.setUseSOAPAction(true);
        _call.setSOAPActionURI("");
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName("Websms", "Send"));

        setRequestHeaders(_call);
        setAttachments(_call);
 try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {msg});

        if (_resp instanceof java.rmi.RemoteException) {
            throw (java.rmi.RemoteException)_resp;
        }
        else {
            extractAttachments(_call);
            try {
                return ((java.lang.Integer) _resp).intValue();
            } catch (java.lang.Exception _exception) {
                return ((java.lang.Integer) org.apache.axis.utils.JavaUtils.convert(_resp, int.class)).intValue();
            }
        }
  } catch (org.apache.axis.AxisFault axisFaultException) {
  throw axisFaultException;
 }
}
其中下列代码是手工添加的 
        javax.xml.namespace.QName qn=new javax.xml.namespace.QName("MessageBean", "MessageBean");
        _call.registerTypeMapping(Message.class, qn,               
                new org.apache.axis.encoding.ser.BeanSerializerFactory(Message.class, qn),       
                new org.apache.axis.encoding.ser.BeanDeserializerFactory(Message.class, qn));
        javax.xml.namespace.QName qn=new javax.xml.namespace.QName("SendStateBean", "SendStateBean");
        _call.registerTypeMapping(SendState.class, qn,               
                new org.apache.axis.encoding.ser.BeanSerializerFactory(SendState.class, qn),       
                new org.apache.axis.encoding.ser.BeanDeserializerFactory(SendState.class, qn));
7.客户端测试
    public static void main(String[] args) {
        try{
            SmsServerService service = new SmsServerServiceLocator();
           
            SmsServer_PortType smsclient = service.getsmsServer();
     //身份认证
            ((org.apache.axis.client.Stub)smsclient).setUsername("001");
            ((org.apache.axis.client.Stub)smsclient).setPassword("001");
           
            Message sms=new Message();
            sms.setTo("13001430090");
            sms.setContent("zyg webservice 短信 测试");
            sms.setFormat(15);
           
            long id=smsclient.send(sms);
           
            System.out.println("submitid="+id);
           
           

            } catch (Exception e) {
            System.err.println("Execution failed. Exception: " + e);
            }

    }
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值