- 浏览: 700742 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (239)
- 系统架构设计 (16)
- java collection framework (2)
- java分布式 (4)
- java多线程 (0)
- 故障处理及调优 (16)
- 软件开发过程及管理 (28)
- OS (5)
- 常用算法 (3)
- design pattern (8)
- transaction (7)
- java apps (48)
- corejava (7)
- java and DB (10)
- cache (0)
- webservice (14)
- web前端 (25)
- 报表 (4)
- 日志系统设计 (3)
- Oracle (4)
- mysql (11)
- xml (11)
- 数据源配置管理 (3)
- 企业数据存储 (4)
- php (2)
- 测试 (1)
最新评论
-
orangebook:
对于初学者来说,这样编写可能会误导,理解更烦锁。
观察者模式(发布-订阅) -
liudajiang:
呵呵 startThreads(rand ...
实践缩小Java synchronized 粒度 -
zengwenbo5566:
谢谢博主,学习了
解决getOutputStream() has already been called for this response -
u011335423:
大神厉害啊 可以了
解决getOutputStream() has already been called for this response -
xiang37:
...
解决getOutputStream() has already been called for this response
5.2 测试webservice接口工具
1. vb脚本来测试。这种方式操作比较方便。
微软公司的Soap Toolkit 开发工具包,这个工具包可以从微软公司的主页:http://download.microsoft.com/download/xml/soap/2.0/W98NT42KMe/EN-US/SoapToolkit20.exe
2.生成的*testCase.java文件来进行测试。
详细测试代码,参见测试webservice用例代码。
6 采用eclipse插件开发通过这个ObjectWeb Lomboz工具来实现代码开发。这个是最简单的方式。效率非常高,但是对webservice一些基础知识的理解帮助不大。步骤如下:
1.建一个新的工程。
2.把wsdl文件放到工程中。
3.点击右键,新建一个webservice客户端或服务器端代码。可以选择axis、proxy两种方式来实现。
7 采用Axis和Spring进行开发
7.1 基本流程
7.1.1 简单的Web Service实现
包含四个基本步骤:
·创建Web Service的商业逻辑(通常是一些Java类)
·将这些Java类部署到一个SOAP服务器上
·生成客户访问代码
·部署客户应用
·将这些Java类部署到一个SOAP服务器上
·生成客户访问代码
·部署客户应用
注意:WSDL等文件的生成通常是利用厂商提供的工具来完成
7.1.2 在Axis下进行开发
This is a sample of the axis!
To run the bidbuy sample, you must do the following:
1. Set up your CLASSPATH.
2. Start a server.
3. Deploy the service.
4. Run the sample.
1. Set up your CLASSPATH. (May don’t set it, )
The CLASSPATH must contain: an XML parser (ie., Xerces), JUnit
(www.junit.org), all the jars in the lib directory, and the directory
containing the samples subdirectory.
2. Start a server.
To run the sample, you will first need to run a server. To run a very
simple server you could run, in a separate window:
java org.apache.axis.transport.http.SimpleAxisServer -p 8080
java -Djava.ext.dirs=lib org.apache.axis.transport.http.SimpleAxisServer -p 8080
3. Deploy the service.
To deploy the service, run:
java org.apache.axis.client.AdminClient deploy.wsdd
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient samples\bidbuy\deploy.wsdd
4. Run the sample.
Finally, to run the client, run:
java samples.bidbuy.TestClient
java -Djava.ext.dirs=lib samples.bidbuy.TestClient
7.2 Axis与Spring的结合
Axis与spring结合,需要提供一些额外工作,即将实现web服务接口的Bean与web服务部署中服务类如何关联。如下:
<service name="GameService" type="" provider="Handler" style="rpc">
<parameter name="handlerClass" value="/blog/com.workingmouse.webservice.axis.SpringBeanRPCProvider"/>
<parameter name="springBean" value="gameInfoService"/>
<parameter name="springBeanClass" value="/blog/com.gamebase.kernel.service.GameService"/>
<parameter name="scope" value="Request"/>
<parameter name="allowedMethods" value="*"/>
.......
</service>
参数handlerClass的值是处理Bean与wsdd文件中服务类的关联。
参数springBean的值表示实现接口GameService注册的Bean的名字。
参数springBeanClass的值表示接口GameService的类。
7.3 Webservice代码设计准备
7.3.1 版本选择
根据你的工程的特点,来选择合适的axis版本。
如果在工程中采用是axis1.2版本的jar文件,如果生成服务器端和客户端时,必须采用合适的axis1.2版本的wsdl2java工具去生成代码。否则,有的不能调用。
7.3.2 软件下载
7.3.3 War文件部署
1.在下载的axis1.4中的本身在webapps下面本身就有一个axis目录(axis目录本身就是一个war文件解压后的一些文件,然后resin就可以配置web-id指向这个文件,当然也是可以把这war文件,放到resin的webapps目录下,然后启动servlet容器resin就可以了)。也可以在网站上单独的下载war文件。
2.然后可以http://localhost:8080/axis/来访问,
3.点击Validation - Validate the local installation's configuration来检查配置是否运行正常。
7.3.4 好的包名命名规则
可以在根目录下建两个源文件目录:
l Component/src/webserviceserver
l Component/src/webserviceclient
源文件可以命名为:
com.qnuse.zj114boss.webserviceclient.huawei.SMSCardService
7.4 Webservie客户端开发
7.4.1 开发步骤
7.4.1.1 获得wsdl文件或wsdl url地址。
7.4.1.1.1 如果本身作为客户端,必须得到对方的对外提供的wsdl地址或wsdl文件。
7.4.1.1.2 如果本身作为服务器端,发布webservcie。获得wsdl文件的方式
7.4.1.1.2.1 方式一:
第一步:在spring工程中的server_config.wsdd 中,配置要发布的函数。 增加如下:
实例一:业务受理平台接口配置。
<service name="business" provider="java:RPC">
<operation name="doService" returnQName="businessReturn" returnType="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<parameter name="wsname" type="xsd:string"/>
<parameter name="param" type="xsd:string"/>
</operation>
<parameter name="wsdlTargetNamespace" value="http://www.channelsoft.com/webservice/business"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.channelsoft.usboss.webservice.business.server.BusinessWebService"/>
</service>
实例二:单点登陆权限认证的配置方式。
<service name="author" provider="java:RPC">
<operation name="login" returnQName="loginReturn" returnType="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<parameter name="userId" type="xsd:string"/>
<parameter name="userPwd" type="xsd:string"/>
</operation>
<parameter name="wsdlTargetNamespace" value="http://www.channelsoft.com/webservice/author"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.channelsoft.usboss.webservice.authorization.server.AuthorImp"/>
</service>
第二步:启动resin。 可以采用本机启动resin。或在其他机器上
第三步:在ie录入地址。
就会产生那个wsdl文件了。。
7.4.1.1.2.2 或通过axis提供的命令,写一个接口类,然后生成wsdl文件。参见:生成Web服务的服务端和客户端代码
a) 同时也可通过vb脚本来测试一下,看看是否能用。参见:Webservice测试
7.4.1.2 生成客户端代码
7.4.1.2.1 不同的生成方式
Dos基本命令方式
|
Dos批处理命令方式
|
Eclipse ant方式
|
7.4.1.2.2 对不同的几种方式详细解释
1.方式一:通过一定命令操作来进行生成客户端。参数描述:参见客户端命令。
a) 在dos切换到axis工程的lib目录。
b) 实例1:java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -a -H -d -s -t -S true -p com.qnuse.zj114.webservice http://134.96.71.58/QnInterface/HzGsyj.asmx?wsdl
c) 实例2:执行:java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -s -d Session -Nurn:AddressFetcher2=com.qnuse.usboss.huawei.SMSCardService AddressBook.wsdl
解释:
i. AddressFetcher2 是targetNamespace="urn:AddressFetcher2",有的wsdl文件中没有urn:则可以采用c)的实现方式
ii.
–p
可以指定自己期望的包名,详细参见命令参数列表。d) 实例3:Java -Djava.ext.dirs=lib -a –t -H -p com.qnuse.zj114boss.webserviceclient.huawei.SMSCardService org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl (也可以是一个wsdl文件名称)
2.方式二:通过脚本文件来生成。它将更快速。在axis的目录下,建一个dat或cmd后缀的文件,例如:axis-1_4.dat(axis-1_4.cmd)在这个文件中,文件内容:java -Djava.ext.dirs=lib -a –s -H -p com.qnuse.zj114boss.webserviceclient.huawei.SMSCardService org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl
这样你可以,每次仅需要修改这个文件wsdl地址或文件名,然后双击即可。
添加-s服务端的代码也将生成。-S true Seketon类也将生成。
3. (推荐方式)方式三:建立一个单独的新工程。可以复用axis-1_4工程。
1. 在网站下载的zip形式的axis-1_4,解压后文件导入eclipse。
2. 新建一个源文件(source folder),例如:devsrc。
3. 配置工程属性。把devsrc设置到build path,输出路径为:axis-1_4/webapps/axis/WEB-INF/classes,同时别忘了导入所有的jar文件。目的是:利用eclipse的编译功能,同时方便resin和tomcat来配置web-id。
4. 导入和配置相关文件。把build.xml文件放到devsrc下面,同时也要把将要生成的wsdl文件放到devsrc下面。
5. 配置build.xml文件。在<target wsdl2java> 设置:文件名称、package名称 、namespace 其他相关参数一般不用配置。公共参数我都已经配置好了。如果想问为什么?请看:axis的帮助文档中的ant task的设置。
6. 然后可以运行<target wsdl2java>。生成了你所有一直盼望出现的文件。
7. 最后,你就可以在相关的文件中进行修改了。每一个文件的使用。详细参见:(文章)AXIS详细介绍
7.4.1.3 最终将在指定的包名下生成不同文件
根据生成命令参数不同,生成的文件数量也不同。当生成全部文件时,例如:
No.
|
文件
|
用途
|
1.
|
deploy.wsdd
|
MyService服务的部署描述文件
|
2.
|
MyService.java
|
MyService服务的接口文件,客户端和服务器端都需要
|
3.
|
MyServiceService.java
|
获得MyService服务的接口文件
|
4.
|
MyServiceServiceLocator.java
|
实现MyServiceService接口
|
5.
|
MyServiceSoapBindingImpl.java
|
实现MyService接口,服务器需要其中补充业务逻辑
|
6.
|
MyServiceSoapBindingSkeleton.java
|
MyService服务的服务端框架代码,实现MyService, org.apache.axis.wsdl.Skeleton接口
|
7.
|
MyServiceSoapBindingStub.java
|
MyService服务的客户端存根代码,实现MyService接口
|
8.
|
undeploy.wsdd
|
注销MyService服务的部署描述文件
|
7.4.1.4 在应用程序中通过代理类调用接口
详细参见,自动生成文件*testCase.java的调用方式。Java代码测试
Note:没有必要设计独立的proxy类,自动生成的代码*Locator本身就是一个proxy类。
7.4.2 其他注意事项
1.可以把dos命令存为.dat格式的文件。然后直接双击就可以完成。这样每次仅仅修改这个文件即可。.cmd格式的文件是Windows NT/2000的批处理文件,其实与BAT文件功能相同,只是为了与DOS/Windows 9x下的BAT有所区别。
2.只要在web.xml中配置了axis的servlet,当启动web服务器时,例如:然后在浏览器中,输入:http://10.130.24.169:8080/zjusboss/webservice/SysUserSynProcessor?wsdl
a) 10.130.24.169:8080/zjusboss 发布的地址和端口号和web-id(应用标识)
如果本机启动就是localhost:8080/zjusboss
b) webservice是在web.xml<servlet>中配置的。<url-pattern>/webservice/*</url-pattern>。 * 代表了不同的对外的服务名称(也就是对外的接口)。
3.根据不同的需要来设定不同的操作命令的参数,可以通过运行:j
ava -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java
看到详细的帮助。更多的指导参见:axis的指导文档。7.4.3 生成客户端和服务器端命令详细实例
如果在dos环境下,首先导航到axis的目录。
7.4.3.1 帮助命令
j
ava -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java
7.4.3.2 生成客户端代码命令
java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -a -H -t -p com.qnuse.zj114.webservice http://134.96.71.142/QnInterface/SendMsgService.asmx?WSDL
7.4.3.3 生成全部代码命令
java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -a -H -d -s -t -S true -p com.qnuse.zj114.webservice http://134.96.71.58/QnInterface/HzGsyj.asmx?wsdl
7.5 Webservice服务器端开发
关于生成wsdl方式,可以参照:获得wsdl文件或wsdl url地址。
可以采用不同的方式进行开发。
7.5.1 在Axis发布的工程中直接开发
详细参见:代码工程(它和这个文档一起发布)。它是在axis1.4工程之上来开发的。
7.5.2 可以单独建立一个工程来开发
可以仿照axis发布的zip文件结构。
1.把相关jar导入。
2.采用合适的文件夹结构。
3.在eclipse中和resin(tomcat)服务器中,进行合理的配置。
7.5.3 在Spring框架下开发
1.写一个对外接口(即方法)。可以参见SysUserSynProcessorImp的开发。
2.该接口的实现类。写一个继承ServletEndpointSupport的类。onInit方法内,拿到getWebApplicationContext相关的dao或其他处理service。让dao或service来完成实际的操作。
3.一个部署描述文件,描述这个服务(接口),在server-config.wsdd文件中,手工加入相关的服务信息。它也可以通过axis的部署命令来生成的。
4.访问实例:http://134.96.71.27:7070/usboss/webservice/SysUserSynProcessor?wsdl(webservice是在web.xml的中对AxisServlet配置的名称)
7.6 Webservice访问方式
1. 启动web服务器,或者,用axis自带的服务器,启动方式是:java -Djava.ext.dirs=lib org.apache.axis.transport.http.SimpleAxisServer -p 8080, 或者把命令保存为cmd格式的文件。
2. 查看web.xml的配置。如果是:
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3. 通过http://134.96.71.189:8080/axis/services访问。可以看到已经发布的webservice。
7.7 Webservice服务发布
7.7.1 发布方式
1.JWS (Java Web Service) Files - Instant Deployment
2.Custom Deployment - Introducing WSDD
JWS方式,部署简单,但是不能指定包名,因此不方便分类。而Custom Deployment方式,有更加了的灵活,可以指定包名,也可以方便的引用其它相关的类文件,对于复杂的应用非常适合。
7.7.2 wsdd文件发布
1. 修改server-config.wsdd的配置文件。它是webservice的描述文件。如果第一次组建webservice工程,并没有这个文件,可以用下面的命令方式来生成一个。
2. 采用axis发布命令:导航到WEB-INF/目录下,运行命令:java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd(默认在当前目录下生成的部署描述server-config.wsdd)。
提示:可以把上面的命令保存为cmd、dat格式的文件。准备好文件后,直接双击即可。
7.7.3 部署步骤
1.Axis命令生成部署文件。在生成全部文件时,包括了deploy.wsdd文件。
2.执行axis发布命令或把webservice服务手工写到server-config.wsdd中。
a) 在WEB-info下面的server-config.wsdd文件包含了全部的对外发布的service。
b) 这个server-config.wsdd文件模板,可以在axis.jar解压后,来获得。或执行axis命令来产生。
c) 当web容器(web.xml中已经配置了axisServelt,同时也添加了相关jar包后),启动后,如果访问axis的相关服务,它将默认去找WEB-INF/下的:server-config.wsdd。
7.8 Webservice测试
可以通过多种方式来测试部署的webservice,一种是VB脚本测试,或是用axis产生的testcase文件。
7.8.1 Vb脚本测试
代码实例:
Dim soapclient, result
Set soapclient = CreateObject("MSSOAP.SoapClient30")
soapclient.mssoapinit "http://134.96.71.142/QnInterface/SendMsgService.asmx?WSDL"
result = soapclient.QnSendMail_GS("zhanglelei@channelsoft.com", "", "", "")
MsgBox "result=" & result
7.8.2 Axis生成的testcase文件测试
没有必要来单独设计一个代理类,自动生成的代码*Locator本身就是一个proxy类。
可以用axis自动生成的*testCase.java文件,通过eclipse来直接测试webservice的调用情况。
详细参见:测试webservice用例代码
7.9 Webservice日志跟踪
1. 使用log4j工具步骤?,
答:必须先引入相关的jar文件,然后正确的配置log4j.xml或log4j.property文件。并且放置到正确的文件夹中。
2. log4j配置文件的选择?
答:建议采用log4j.xml文件,更加易读。
3. 在resin的conf文件中的log配置方式?
答:可以在log4j.xml文件中配置,也可以在resin.conf中配置,在<error-log id='logs/error.log'rollover-size='5MB'/>下面增加:<stdout-log id='logs/stdout.log' rollover-size='5MB'/>,就可以实现标准输出信息到stdou.log中。 和在log4j.xml中的配置是也可以达到相同的效果。
4. commons-logging.properties的作用?
答:通过配置它,可以使你方便的配置,使用不同的log工具。如果删除它,就默认使用你当前的日志工具,例如:log4j, 详细看axis中的,文件中描述。当然,可以删除这个文件,仅采用log4j工具.
5. 是否在web.xml配置?
答:如果配置文件,log4j.properties 或 log4j.xml默认是在,WEB-INF/classes下,则将不必要在web.xml文件配置,系统将自动的进行加载。
6. 如何指定日志路径?
答:指定自己指定的记录日志的包路径。如果配置级别是:debug, 只有在包为com.int97时,有debug代码时,才会向文件中输出数据。
7. log4j.additivity.XXX= 的含义?
`答:若为 false,表示Logger 的 appender 不继承它的父logger
若为true,则继承,这样就兼有自身的设定和父logger的设定
发表评论
-
Tomcat6+axis1.4 Web服务发布及压力测试
2011-01-07 15:53 32771.环境配置 1.1安装jdk1.6.0 1.2安装tom ... -
webService(web服务)自动发布工具-源代码
2008-11-12 15:11 3308这个小工具特别适合对web服务相关知识了解较少,又急需上web ... -
web服务自动发布工具初步完成
2008-10-02 21:10 2222web服务自动发布工具简单介绍: 1.整个过程由web程序 ... -
想做个webservice自动部署工具,欢迎大家提点需求或意见
2008-09-24 16:14 2306最近遇到了一个实际的问题:怎样让一个不了解webservice ... -
使用axis开发webservice
2008-09-23 16:42 47301 介绍本文并不是想介绍Web服务的原理、系统架构等,我们假设 ... -
webservice开发和使用指南5
2008-09-22 17:18 181114.2 build.xml脚本代码 在这里增加了 ... -
webservice开发和使用指南4
2008-09-22 17:16 36723. 修改web.xml 加入如下代码<list ... -
Webservice开发和使用指南3
2008-09-22 17:14 23638.Axis集成Resin或其它应用服务器 8.1 ... -
Webservice开发和使用指南1
2008-09-22 17:06 28101 .修改历史 Version Change ... -
webservice开源引擎的比较:Axis和CXF的比较
2008-09-22 15:09 5060在SOA领域,我们认为Web ... -
实战webservice安全策略
2008-07-09 12:51 8357前些日子公司的应用要 ... -
.net客户端调用java服务端,通讯数据加密解密思路及过程
2008-03-08 10:37 3993目前系统客户端用.net实现,java服务端采用了webser ... -
net的客户端调用java的web服务,服务端怎样保持session以及通讯的安全问题
2008-03-05 12:18 2232net的客户端调用java的web服务,在客户端怎样保持ses ...
相关推荐
WebService开发和使用指南 在IT领域,WebService是一种基于开放标准的、平台和语言无关的通信协议,用于在不同系统之间交换数据。它通过XML(eXtensible Markup Language)进行数据编码,使用SOAP(Simple Object ...
【WebService开发指南】这篇文章主要介绍了基于Java的Axis2框架如何进行WebService的开发。Axis2是Apache组织提供的一个用于构建和部署Web服务的高级框架,它作为Axis1的升级版,提供了更多的特性和优化。 首先,...
1. 定义服务接口:使用Java注解(如@WebService)来声明服务接口,包括服务端点接口(SEI)和消息处理器接口。 2. 实现服务:为接口提供具体实现,处理客户端请求。 3. 创建WSDL:JAX-WS自动生成WSDL文件,描述服务...
EAS-WebService开发指南 本文档旨在指导开发者如何使用EAS-WebService开发指南...通过本文档,开发者可以了解如何使用EAS-WebService开发指南来构建Web服务,并且了解了WebService的开发流程和客户端开发的注意事项。
WebService 开发手册 WebService开发指南
在金蝶EAS V7.5的Web Service开发指南中,详细介绍了以上各个步骤,包括具体的API使用示例、配置示例和常见问题解答。开发者应仔细阅读并参照指南实践,以充分利用金蝶EAS的Web Service功能,实现企业系统的高效集成...
总而言之,Axis2_WebService_开发指南涵盖了从基础准备到实例演示,再到高级特性的使用,为开发者提供了一套完整的Axis2 WebService开发教程。通过这个指南,开发者可以快速上手Axis2的使用,以及深入理解和应用其在...
BOSWebService开发指南[收集].pdf
"C++环境下使用gsoap开发...本文为读者提供了一个全面的C++环境下使用gsoap开发WebService接口的操作指南,从WebService的概念和特点到gsoap的使用流程和选项,希望能够帮助读者更好地理解和掌握WebService开发技术。
2. "Web Service开发指南.pdf":这是一份全面的Web服务开发指南,可能涵盖了Web服务的基本概念、架构、设计原则、开发工具、测试方法等。读者可以通过这份文档深入理解Web服务的全貌,包括如何创建WSDL文件,如何...
WebService开发指南.rar WebService开发指南.rar
### WebService之CXF开发指南 #### 一、概述 WebService技术已经成为企业级应用中不可或缺的一部分,它使得不同系统之间能够以标准化的方式进行交互。在众多WebService框架中,Apache CXF因其灵活、强大的功能和...
Axis2 WebService 开发指南 Axis2 是一个基于 Java 的开源 WebService 框架,具有高效、灵活、可扩展等特点。以下是对 Axis2 WebService 开发指南的知识点总结: 1. 环境准备: Axis2 的开发需要下载相关的 jar ...
### WebService开发过程详解 #### 一、概述 本文将详细介绍如何使用Eclipse集成开发环境(IDE)结合Tomcat服务器及Axis框架来开发一个简单的WebService应用。对于初学者来说,这是一个很好的入门指南,通过本教程...
EAS BOS开发指南中的WebService开发涉及多个关键知识点,主要包括: 1. BOSWebService的原理与功能 - Webservice是基于SOAP、WSDL和UDDI技术,通过XML格式的数据交换实现不同平台和应用系统间的协同工作。 - ...
【WebService开发指南 源码】是一份详细指导如何使用AXIS进行WebService开发的源代码集合,主要聚焦在AXIS工具的使用上。AXIS是一个流行的开源Java库,用于实现Web Services,它允许开发者轻松地创建和部署SOAP...
【WebService XFire开发指南】 在IT行业中,WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的协议,允许不同系统之间的应用程序通过互联网进行通信。它提供了一种松散耦合的方式,使得分布式系统可以共享数据...