Webservice开发和使用指南2

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服务器上
·生成客户访问代码
·部署客户应用
注意: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 录入地址。
http://localhost:8080(端口号)/usboss( 项目名称 )/webservice (在 web.xml 中配置的那个映射文件) /business?wsdl
就会产生那个 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的设定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值