论坛首页 Java企业应用论坛

采用axis创建web service

浏览 5601 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-04  

采用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);
            }

    }

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics