posts - 495,comments - 227,trackbacks - 0

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

***************************************************************************************
org.apache.axis.wsdl.Java2WSDL  中的命令解释
-o  :生成的WSDL文件
-l   :Web服务的位置
-n  :WSDL文件的名字空间
-p  :包到名字空间的映射

***************************************************************************************

java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true
-Nurn:BookServletService com.hellking.webservice.servlet temp.wsdl

使用这个命令后将生成以下文件:

BookServiceInterface.java:新的BookServiceInterface接口,它扩展了java.rmi.Remote接口;

BookServiceInterfaceService.java:客户端服务接口,用来获得BookServiceInterface对象的引用;

BookServiceInterfaceServiceLocator.java:在客户端使用,主要用来服务定位;

BookServletServiceSoapBindingImpl.java:服务端实现类,它实现了BookServiceInterface接口,服务端的业务方法实现代码就在这里编写;

BookServletServiceSoapBindingSkeleton.java:服务端Skeleton;

BookServletServiceSoapBindingStub.java:客户端Stub;

BookVO.java:新的BookVO序列化对象;

deploy.wsdd:部署这个Web服务的脚本;

undeploy.wsdd:卸载这个Web服务的脚本。

posted on 2006-03-30 12:55 SIMONE 阅读(1562) 评论(0)  编辑  收藏 所属分类: AXIS

只有注册用户登录后才能发表评论。


网站导航: