学海无涯

记录我的程序人生...

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  72 随笔 :: 2 文章 :: 69 评论 :: 11 引用

公告

2005年12月13日 #

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 @ 2005-12-13 20:16 josson 阅读(677) 评论(0) 编辑

Web Service简介

1.定义
由两部分组成
·SOAP--Web Service之间的基本通信协议。
·WSDL--Web Service描述语言,它定义了Web Service做什么,怎么做和查询的信息。

2.简单的Web Service实现
包含四个基本步骤
·创建Web Service的商业逻辑(通常是一些Java类)
·将这些Java类部署到一个SOAP服务器上
·生成客户访问代码
·部署客户应用
注意:WSDL等文件的生成通常是利用厂商提供的工具来完成

3.WSDL解析
WSDL描述语言一般包含三部分
·What部分--包括了type、message和portType元素
Type:定义了Web Service使用的数据结构(使用XML Schema定义)
Message:一个Message是SOAP的基本通信元素。每个Message可以有一个或多个Part,每个Part代表一个参数。
PortType:消息汇总为不同的操作并归入到一个被称为portType的实体中。一个portType代表一个接口(Web Service支 持的操作集合),每个Web Service可以有多个接口,它们都使用portType表示。每个操作又包含了input和 output部分。
·How部分--包含binding元素
binding元素将portType绑定到特定的通信协议上(如HTTP上的SOAP协议)
·Where部分--由service元素组成
它将portType,binding以及Web Service实际的位置(URI)放在一起描述

4.客户端
通常Web Service可以有三种类型的客户
·商业伙伴(Business Partner)--包括分发商,零售商以及大型消费者)
此类客户通过SOAP、WSDL、ebXML、UDDI等XML技术与Web Service连接
·瘦客户--包括Web浏览器、PDA以及无线设备
该类客户通常经由轻量协议(如HTTP)与Web Service连接
·肥客户--包括Applet、各类应用以及现存系统
通常使用重量级协议(如IIOP)连接Web Service

5.部署和开发
axis支持三种web service的部署和开发,分别为:
1。Dynamic Invocation Interface ( DII)
2。 Stubs方式
3。Dynamic Proxy方式
posted @ 2005-12-13 10:29 josson 阅读(280) 评论(0) 编辑