Web Service学习笔记(3)
来源:互联网 发布:淘宝作图用什么软件 编辑:程序博客网 时间:2024/05/16 15:30
(3)STUB的布署方式(自动生成代理,将代码封装,方便访问)
你要向外提供什么样的服务,可以先写一个interface 来描述它。这个interface 必需继承
自java.rmi.Remote ,而且每个方法必需抛出java.rmi.RemoteException 。本例中的服
务定义为:
package com.eshore;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface PersonManager extends Remote{
public void addPerson(Person person)throws RemoteException;
public Person getPerson()throws RemoteException;
}
使用的JAVABean为:
package com.eshore;
public class Person {
public String name;
public String sex;
public int age;
public Person() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
使用工具Java2WSDL生成wsdl文件,然后再使用工具WSDL2Java生成STUB。
此种方法功能比较强大,可以使用stub或者前面的方式来访问。
两工具文件内容如下,可以粘贴保存为bat文件直接使用:
Java2WSDl.bat:
=============================================================
@ECHO [*] 此工具是用来将JAVA代码生成WEB SERVICE的WSDL文件的工具
@ECHO [*] 用法如下:
@ECHO [*] 正确成功的安装AXIS
@ECHO ****************************************************************
@ECHO --------------------------命令用法-----------------------------------
@ECHO [*] 将此文件拷至对应的WEB-INF目录下,运行
@ECHO [*] 参数含义如下
@ECHO [*] -o,output[WSDL file]指定输出的WSDL文件名。若没有指定,
@ECHO [*] 一个适当的默认WSDL 文件名将被写到当前目录。
@ECHO [*] -l,location[location]指定Web服务位置的URL。最后的斜线
@ECHO [*] 或反斜线后的名字是服务端口(service port)的名字
@ECHO [*] (除非被s选项覆盖)。服务端口的地址位置属性被
@ECHO [*] 分配为该指定值
@ECHO [*] -P,portTypeName指定portType元素的名字,如果未指定,
@ECHO [*] 则使用classofportType的名字
@ECHO [*] -b,bindingName[name] 指定binding元素的名字。若未指定,
@ECHO [*] 使用值--–servicePortName + "SOAPBinding"
@ECHO [*] -n,namespace [target namespace]指定生成的WSDL的目标名称空间
@ECHO [*] -y,style[argument]指示WSDL文档的风格,有DOCUMENT,RPC
@ECHO [*] 和WRAPPED 三种。默认为RPC。
@ECHO [*] (注意:p和后边的参数之间不能有空格,这是本人的经验)
@ECHO ***************************************************************
@ECHO -----------------按照以上规则对命令进行修改使用----------------------
@ECHO -------将此文件拷至WEB-INF下,将要成生WSDL的包与类同时拷至此目录下
@ECHO -----设置输入文件的名称
set OPFN=PersonManager.wsdl
@ECHO -----设置设置PORTTYPE的名称
set PORT_TYPE=PersonManagerPortType
@ECHO -----设置soap绑定的名称
set SOAP_BD=PersonManagerSoapBinding
@ECHO -----设置WEB SERVICE的地址
set WBS_L=http://localhost:8080/axis/services/PersonManager
@ECHO -----设置命名空间
set WBS_NS=http://localhost:8080/axis/services/PersonManager
@ECHO -----设置使用WEB SERVICE方式
set WB_STYLE=rpc
@ECHO -----设置执行的类名
set WB_CLASS=com.eshore.PersonManager
java -Djava.ext.dirs=lib org.apache.axis.wsdl.Java2WSDL -o%OPFN% -P%PORT_TYPE% -b%SOAP_BD% -l%WBS_L% -n%WBS_NS% -y%WB_STYLE%
%WB_CLASS%
@ECHO [*]命令执行完毕
pause
=========================================================
WSDL2Java.bat文件如下:
=========================================================
@ECHO [*] 此工具是用来将WSDL文件生成java文件的工具
@ECHO [*] 用法如下:
@ECHO [*] 正确成功的安装AXIS
@ECHO *********************************************************************
@ECHO --------------------------命令用法-----------------------------------
@ECHO [*] 将此文件拷至对应的WEB-INF文件目录下,将WSDL文件也放此处,运行
@ECHO [*] 参数含义如下
@ECHO [*] -p,package,包名,对应的类的包
@ECHO [*] -c,对应生成的接口实现类,实现服务的类名
@ECHO [*] -s,指服务器端
@ECHO *********************************************************************
@ECHO 设置包名(对应生成访问类的包名)
set PACK_CLASS=com.eshore
@ECHO 设置实现类的名称(如需要,将注释放开,将后面内容拷到命令行)
@ECHO -c%IMPL_CLASSNAME%
@ECHO set IMPL_CLASSNAME=com.eshore.PersonManagerImpl
@ECHO 设置WSDL文件的名子(可以直接对应网上的WSDL的文件URL)
set WSDL_NAME=PersonManager.wsdl
java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -s -p%PACK_CLASS% %WSDL_NAME%
pause
===========================================================
发布deploy.wsdd为server-config.wsdd的文件deploy.bat内容为:
===========================================================
@ECHO 将deploy.wsdd布署为server-config.wsdd,需将此文件放于WEB-INF下运行
@ECHO /WEB-INF/lib下放需要的类包文件
@ECHO 设置布署的路径
set Axis_Servlet=http://10.17.33.46:8089/CFMSS/servlet/AxisServlet
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
pause
===========================================================
使用以上工具生成的JAVA代码的几个类分别是:
执行完上述命令将产生如下文件:
deploy.wsdd undeploy.wsdd
部署(反部署)描述符文件
Person.java
和前面自己写的一样,用哪个都可以
PersonManagerPortType.java
和接口PersonManager 一样,就是名字变了。本文中用这个类。
PersonManagerImpl.java
实现PersonManagerPortType 的类。具体的逻辑还得自己去填充。
PersonManagerPortTypeService.java
用于获取PersonManagerPortType ,是一个接口
PersonManagerPortTypeServiceLocator.java
PersonManagerPortTypeService 的实现
PersonManagerSoapBindingStub.java
方便客户端调用服务的Stub 类
参考资料:
(1)Xml,Soap,Wsdl,WebService: http://www.w3schools.com/
(2)Apache Axis: http://ws.apache.org/axis/
- Web Service学习笔记(3)
- Web service学习笔记
- Web Service学习笔记
- web service学习笔记
- Web service学习笔记
- Web Service学习笔记
- Web Service学习笔记
- Web Service学习笔记
- web service 学习笔记
- Web Service学习笔记
- Web Service学习笔记
- Web Service学习笔记
- web service 学习笔记
- Web Service学习笔记
- Web Service学习笔记
- Web Service学习笔记
- Web Service学习笔记
- Web Service学习笔记
- COM原理及应用----概述
- 计算机无法访问局域网内的计算机
- 商业智能应用中的数据挖掘
- 《独自等待》,献给从你身边溜走的那个人
- COM原理及应用----COM对象和接口
- Web Service学习笔记(3)
- 序:我要学习linux了
- vc 利用IEHelper实现简单网址过滤
- document.all.item的解释和一个表单向多页面提交
- COM原理与应用----COM的实现
- Ping, IPConfig, Format, Netstat, etc. Not Recognized as Commands
- DNS
- 另眼看BI项目报表设计
- 动态规划【转】