学海无涯

记录我的程序人生...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、建立代理接口文件
public interface ISendSms extends java.rmi.Remote {
    public String getUser(String id,String type);
}

转到在目录..\WebRoot\WEB-INF\classes下:

2、生成client stub文件, 生成SendSms.wsdl文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.Java2WSDL -oSendSms.wsdl -lhttp://localhost:8080/websms/services/SendSms -n"urn:SendSms" -p"sample.webservice" "urn:SendSms" sample.webservice.ISendSms

生成的SendSms.wsdl文件中,参数名称默认为in1,in2等,需要改成相应的名称。

3、生成client stub
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true -Nurn:SendSms sample.webservice SendSms.wsdl

生成的文件列表如下:
deploy.wsdd
undeploy.wsdd
ISendSms.java
ISendSmsService.java
ISendSmsServiceLocator.java
SendSmsSoapBindingImpl.java
SendSmsSoapBindingSkeleton.java
SendSmsSoapBindingStub.java

4、布署服务,在WEB-INF目录下生成server-config.wsdd文件, 随Tomcat启动自动加载里面定义的服务
转到目录..\WebRoot\WEB-INF\classes\sample\webservice下
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/websms/services/AdminService deploy.wsdd

在Axis里书写deploy.wsdd并利用org.apache.axis.client.AdminClient发布,其主要工作就是把<service>标签中的内容添加在server-config.wsdd里,所以一般直接编辑server-config.wsdd文件会更方便一些。不过当你还没有server-config.wsdd文件时,使用deploy.wsdd的方法会更方便些,因为AdminClient会帮你生成一些额外的xml元素(<handler>等等),而这些元素是必要的。

5、项目中加入Axis所需的包, web.xml加入相关定义
  <display-name>Apache-Axis</display-name>
  <servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>
        org.apache.axis.transport.http.AxisServlet
    </servlet-class>
  </servlet>
  <servlet>
    <display-name>Axis Admin Servlet</display-name>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class>
        org.apache.axis.transport.http.AdminServlet
    </servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

通过http://localhost:8080/websms/services/SendSms?wsdl来查看WSDL描述了

6、测试代码
public static void main(String[] args) {
  try{
  /*ISendSmsService service = new ISendSmsServiceLocator();
   ISendSms sender = service.getSendSms();
   String result = sender.send("cid","cname");
   System.out.println("call result:"+result);*/
   String tvServiceURL = "http://localhost:8080/websms/services/SendSms"; //web service 地址
   java.net.URL endpointURL = new java.net.URL(tvServiceURL);
   String result = "ok";
   result = new SendSmsSoapBindingStub(endpointURL,null).send("id","cname");
   System.out.println("call result:"+result);
  }
  catch(Exception ex){
   ex.printStackTrace();
  }
 }

我们还可以通过IE浏览器直接调用服务,方法是在服务URL后加“method=xxx”,其中xxx是要调用的方法名称。例如可以通过http://localhost:8080/websms/services/SendSms?method=send&userId=uid&...调用方法。
====================================================================================
另外,  也可能过新建一个deploy.wsdd文件,通过这个文件直接布署我们的服务
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/websms/services/SendSms deploy.wsdd
// 它会在WEB-INF目录生成server-config.wsdd文件, 若此文件已存在, 它会在文件加入当前服务的注册。

生成wsdl文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.Java2WSDL -oSendSms.wsdl -lhttp://localhost:8080/websms/services/SendSms -nsendsms sample.webservice.SendSms

生成客户端文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.WSDL2Java SendSms.wsdl -p client

posted on 2005-12-13 20:16  josson  阅读(1050)  评论(0编辑  收藏  举报