kapok
垃圾桶,嘿嘿,我藏的这么深你们还能找到啊,真牛!
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
455 随笔 :: 0 文章 :: 76 评论 :: 0 Trackbacks
<
2005年8月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(28)
给我留言
查看公开留言
查看私人留言
随笔分类
.NET(10)
(rss)
ALL(464)
(rss)
AppFuse(20)
(rss)
CorBa(2)
(rss)
Eclipse技巧和插件等(7)
(rss)
English(10)
(rss)
ERP(3)
(rss)
HibernateAndSpring(82)
(rss)
J2EE(290)
(rss)
J2SE(27)
(rss)
JB(2)
(rss)
JBOSS(4)
(rss)
JDO(1)
(rss)
Linux(7)
(rss)
Oracle(9)
(rss)
PetStore
(rss)
Struts(9)
(rss)
UML与RUP(13)
(rss)
Web Services(8)
(rss)
Weblogic Portal(72)
(rss)
XDoclet(6)
(rss)
个人项目所需资料(8)
(rss)
办公自动化(2)
(rss)
点滴(1)
(rss)
程序员生活(10)
(rss)
行业知识(15)
(rss)
软件工程和项目管理(32)
(rss)
软件测试(1)
(rss)
随手贴(5)
(rss)
面试(4)
(rss)
随笔档案
2005年9月 (18)
2005年8月 (39)
2005年7月 (42)
2005年6月 (49)
2005年5月 (70)
2005年4月 (116)
2005年3月 (121)
Corba
EAI
Bea Portal相关
dnnchina
Enterprise Java Research Library
xoops
泡泡-博客
Online Document
Bea Resource Center
WebLogic Online Help_ZH
Open Source
exo portal
Groller
Mule
pow2toolkit
xpetstore
开源
Portal
huihoo JSR168
灰狐
RSS Links
.Text 0.958 安装&问题解决方案
All about Blog and RSS
RSS links
Weblogic净化贴
Weblogic
WL Portal FAQs
WLP FAQss
不错的链接
chenyun2000
CSDN专栏作家
Eclipse Live Forum
firebody
gigix
glchengang
IT人
JavaEye
JavaPassion
michael
ODMG
oracle_tech
Pattern在线查询手册
querycriteria
rosen
spring reference
上海电子地图
兔八哥
兔子
思维导图
范凯的废纸篓
工具集合
AppFuse
数据仓库相关
blog on dw
BRM业务参考模型
chinabi
china-bi
CNOUG DW
datawarehouse
dbazine
dmreview
DW 信息目录
dw-institute
DWWAY
ewsolutions
flymouse
inmoncif
intelligententerprise
isomebody
IT售前论坛
rkimball
SummerRain
tdan
商业智能
头头脑脑
快语综合
精进门
搜索
最新评论
1. re: Java中的URLEncoder和URLDecoder类
asdfsdf
--sadf
2. re: 面试题,做出来3万月薪[未登录]
很强,就是这样的逻辑@此外
--TEST
3. re: MKS Toolkit[未登录]
政治
--s
4. re: Java 远程方法调用(RMI)
if (r instanceof Meeting )
这个Meeting从哪里来?
--nx
5. re: ClearCase指南-基础篇(连载一)
clearcase 可以使用clearfsimport -recurse -nsetevent进行批量导入
--china-java.net
阅读排行榜
1. weblogic部署方法(11445)
2. x509数字证书介绍(11412)
3. 一个很不错的基于角色的权限管理系统设计!(10485)
4. UML的StereoType的解释(9002)
5. When Runtime.exec() won't (5431)
6. 完全卸载Oracle(5392)
7. OpenLDAP快速指南(5099)
8. 如何发布和查找 WSDL 服务描述(4488)
9. Eclipse不能自动编译的问题(4275)
10. SSL※ X509(3867)
评论排行榜
1. 面试题,做出来3万月薪(11)
2. x509数字证书介绍(5)
3. OpenLDAP快速指南(5)
4. Compiere的汉化 (5)
5. oracle的select for update(4)
6. 使用Eclipse plus Pluto开发你的第一个与JSR168兼容的Portlet(3)
7. 迎接RFID的时代(3)
8. 简化JavaMail:小巧 Jakarta Commons-Email 简单教程(3)
9. Visual CHM和jd2chm不错(2)
10. Java 远程方法调用(RMI)(2)
AXIS开发Web Service
http://www.cjsdn.net/post/view?bid=5&id=151014&sty=1&tpg=1&age=0
这篇比较早,放在自己的blog里,顺便贴过来,让版本看看,是否可以加分。
Apache Axis开发WEB Service简要说明(1)- -
1 介绍
本文并不是想介绍Web服务的原理、系统架构等,我们假设您已经了解了关于Web服务的一些基本的概念、原理等知识。本文主要是针对那些已经了解Web服务概念,但是还没有亲身体会Web服务所带来令人欢欣鼓舞的特征的开发人员。在此我们认为你已经具备了Java、XML等基础知识,如果你还有其他开发环境的经验例如VB、VC那是再好不过的了。
1.1 Web服务
虽然我们并不想详细讲述Web服务的体系结构,但是大概的介绍一下还是有必要的。Web服务是一种新型的Web应用程序。不同于其他Web应用程序,它是自适应、自我描述、模块化的应用程序,并可以跨越Web进行发布、定位以及调用。简单的Web服务可以提供例如天气预报或者航班信息的服务。一旦部署了Web服务,其他的应用程序就可以发现和调用所部署的服务。
1.2 AXIS项目
Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。有很多流行的开发工具都使用AXIS作为其实现支持Web服务的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本是1.1,可以从http://ws.apache.org/axis/index.html下载。下图是AXIS核心引擎的体系结构图:
整个AXIS项目包括以下几个部分:
1. 消息流子系统
消息流子系统提供了灵活的消息传递框架,这个消息传递框架包括处理程序、链、序列化程序和反序列化程序。处理程序是一个处理请求、响应和故障流的对象。处理程序可被组合在一起成为链,而且可以使用一个灵活的部署描述符来配置这些处理程序的顺序。
2. 传输框架子系统
提供了一个传输框架,这个传输框架可以帮助您创建自己的可插式传输发送器和传输侦听器。
3. 数据编码子系统
AXIS完全按照 XML Schema 规范提供各种数据类型的自动序列化,并且提供功能扩展接口来使用您自己定制的序列化器和反序列化器。
4. 其他
AXIS完全支持 WSDL 以及日志记录、出错以及故障处理机制。它同时提供一些工具用来讲WSDL文档转换成客户端的调用框架以及根据类来产生WSDL定义文档。
AXIS目前版本支持的标准是:W3C SOAP 1.1 和 1.2;WSDL 1.1;SAAJ 1.1(SUN公司:SOAP with Attachments API for Java);JAX-RPC(SUN公司:Java API for XML-Based RPC)1.0。
2 Axis使用
2.1 Axis运行需要哪些jar文件
对Axis解包后,将axis-1_1/webapps/axis/WEB-INF/lib/目录下的jar文件复制到/usr/local/apache/htdocs/WEB-INF/lib目录下(Web应用程序的目录)。应包括以下jar文件。
axis-ant.jar
axis.jar
commons-discovery.jar
commons-logging.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j.jar
2.2 Axis使用注意事项
2.2.1 获取WSDL文件
Axis支持用户通过网络方式,从已发布WEB服务的机器上获取WEB服务描述文件WSDL。用户只需简单在IE地址栏输入如下格式访问链接即可:
http://webappIp[/webapp]/services/WebServiceName?wsdl
其中:
webAppIp:运行WEB服务机器的地址。
[/webapp]:运行Axis WEB服务的Web应用名;如果应用使用跟目录,则不需要
services/WebServiceName:WEB服务定位路径,类似Servlet路径;其中WebServiceName为定义的Web服务接口名称。
用户将访问获的文件直接保存,即可获取对应WEB服务的WSDL描述文件。
2.2.2 参数类型定义(输入、输出参数)
如果用户希望使用函数定义中的输出参数获取响应结果时,自动生成的WSDL文件无法满足,必须手动对自动生成的WSDL文件进行修改。
如定义java Interface接口如下:
int queryUser(long type,User[] users) ;
则使用java2WSDL生成的WSDL如下:
为了将User[]作为输出参数,必须修改自动生成的WSDL文件,在QueryUserResponse返回消息中,添加User[]参数定义,告知Axis在WSDL2java处理中,将User[]作为输入/输出参数处理。
2.2.3 server-config.wsdd
Axis会在WEB应用程序的WEB-INF/目录下自动生成一个名字为server-config.wsdd的xml文件,其中记录了已部署的WEB服务。每部署一个新的WEB服务时,Axis都会将新服务的描述信息加入到server-config.wsdd中。
如果需要在Web服务器启动时,自动加载WEB服务,只需将server-config.wsdd与WEB应用描述文件web.xml一并放置在WEB-INF目录下即可。
server-config.wsdd中的内容可以手工更改获取,也可通过发布获取自动生成的文件。
a) 将WEB服务发布后,从WEB应用的WEB-INF目录下,获取自动生成的server-config.wsdd文件。
b) 手工更改时,将deploy.wsdd文件中的…中的内容直接拷贝,粘贴到原始server-config.wsdd文件中单独行即可。
2.2.4 如何将Axis集成到自己的Web应用中。
Axis是以Servlet的方式运行的,而Tomcat的作用相当于Servlets容器(Container),因此只要配置得当,就可以使Axis在Tomcat环境中运行,这一点也适用于Tomcat以外的其它应用服务器。在Tomcat中配置Axis的方法如下。
将axis-1_1/webapps/axis/WEB-INF/web.xml中的Servlet配置项复制到自己Web应用描述文件web.xml中对应位置上。通常应包括以下内容。
在Servlet定义与servlet-mapping定义间,将本WEB应用的Servlet定义加入。
AxisServlet
Apache-Axis Servlet
org.apache.axis.transport.http.AxisServlet
AdminServlet
Axis Admin Servlet
org.apache.axis.transport.http.AdminServlet
100
SOAPMonitorService
SOAPMonitorService
org.apache.axis.monitor.SOAPMonitorService
SOAPMonitorPort
5001
100
AxisServlet
/axis/servlet/AxisServlet
AxisServlet
*.jws
AxisServlet
/services/*
SOAPMonitorService
/SOAPMonitor
wsdl
text/xml
xsd
text/xml
2.2.5 Axis提供了哪些开发工具
Apache Axis提供了WSDL2Java和Java2WSDL两个开发工具。
WSDL2Java利用已知的WSDL文件生成服务端和客户端代码。该WSDL文件可以是由合作伙伴提供的,也可以是利用Java2WSDL生成的。Java2WSDL根据已有的Java类文件生成WSDL文件,Java类文件可以是接口类文件,并不需要实现细节。
此外Axis还提供了SoapMonitorApplet和TCPMon工具,可用于监测Web服务。
1 如何开发Web服务的服务端和客户端代码
1.1 生成或取得WSDL文件
Java2WSDL是Axis提供的利用Java类文件得到WSDL文件的工具。类文件可以使用接口文件编译生成。
生成WSDL文件以后,就可以利用Axis提供的WSDL2Java工具生成Web服务的服务端代码和客户端代码了
注意事项 :
WSDL文件也可以由合作伙伴提供。这种情况下合作伙伴往往是Web服务的提供者或标准接口的制定者,开发者只要按照既定的WSDL文从件生成客户端或服务端代码就可以了。
1.2 开发客户端
在开发客户端时,WEB接口定义文件WSDL一般已经提供,或者可以通过Internat获取。如果未提供一般也提供了接口描述文档,详细描述了接口输入、输出参数定义,据此我们可以声明Interface接口,通过Aixs提供的java2WSDL生成WSDL文件。
下面我们假定WSDL文件已经提供;并且我们假定读者对eclipse、ant已经有一定了解。
WSDL2Java工具用于从WSDL文件生成客户端存根(stub)代码,服务端框架(skeleton)代码以及WSDL中的数据类型文件(生成与之对应的Java代码)。开发人员只需向框架代码中补充相关的业务逻辑代码即可得到完整的Web服务代码,因此该工具极大地减轻了开发人员的编码负担。
axis_ant.jar包中已经定义了Axis集成Ant的相关Ant任务定义。任务定义在axis-tasks.properties中
#properties file for taskdefing the public Axis taskdefs
axis-wsdl2java=org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask
axis-java2wsdl=org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask
axis-admin=org.apache.axis.tools.ant.axis.AdminClientTask
Ant任务名
对应Axis提供的工具
备注
axis-wsdl2java
WSDL2java
axis-java2wsdl
Java2WSDL
axis-admin
AdminClient
1. 假定应用工程目录结构如下:
│ build.properties
│ build.xml
│ myAxis.wsdl
├─bin
└─src
2. build.properties文件内容如下:
axis.home = D:\\java\\axis\\axis-1_2beta
wsdl.file = myAxis.wsdl
namespace.service = urn:MyAxis
package.service = com.MyAxis.client
3. Ant文件build.xml内容如下:
定义Axis包所在类路径-->
从axis-ant.jar包中,引入Axis的Ant任务定义-->
classpathref="axis.classpath" />
依据WSDL文件,生成客户端代码-->
url="${basedir}/${wsdl.file}"
deployscope="Request"
output="${generated.path.src}"
serverside="false"
skeletondeploy="false"
testcase="true"
noimports="false"
>
1.1 开发服务端
开发服务端程序的一般步骤如下:
l 根据接口定义,定义java Interface接口。
l 根据interface接口文件,使用java2WSDL生成WEB服务描述文件
l 根据WSDL文件,使用WSDL2java生成对应的服务端代码
l 修改自动生成的实现代码类[webapp]SoapBindingImpl.java,完成接口具体操作。
l 考虑到WEB服务为系统对外门户,具体业务逻辑可能分模块实现,建议考虑参考门面模式完成interface定义;在服务端具体实现时,WEB服务接口部分向逻辑提供接口,由逻辑实现组件完成具体的逻辑操作。WEB服务部分仅完成SOAP协议解封装等工作。
1. 假定工程路径如下:
├─conf
├─generated
├─source
├─src
└─WebRoot
├─META-INF
└─WEB-INF
└─lib
2. build.properties Ant脚本使用属性
wsdl.file = myAxis.wsdl
########接口文件com.myaxis.MyAxis.java;供java2WSDL使用#####
wsi.interface = com.myaxis.MyAxis
location =
http://localhost/CmsWsi/services/CmsWsi
########期望生成的接口定义包与命名空间对应关系;供WSDL2java使用###
namespace.service =
http://com.
myaxis.MyAxis/1.00
package.service = com.myaxis.server
########期望生成的接口相关消息类与命名空间对应关系;供WSDL2java使用###
namespace.service.msg =
http://com.myaxis.msg
package.service.msg = com.myaxis.server.msg
########WEB容器定义,共AdminClient发布、注销WEB服务使用###
target.port = 80
target.server = localhost
target.appname = MyAxis
servletpath.admin = services/AdminService
########在ANT脚本中采用命令行方式时,发布调用的AdminClient位置##
location.admin =
http://localhost/MyAxis/services/AdminService
3. build.xml
加载build.propertis定义-->
容器下的类路径,Axis相关jar已拷贝到对应目录下-->
引入Axis的Ant任务定义-->
classpathref="axis.classpath" />
初试化,构造WSDL2java生成代码路径,-->
依据java Interface定义,生成WSDL定义文件-->
location="${location}"
namespace="${namespace.service}"
output="${generated.path}/${wsdl.file}"
style="RPC"
>
根据WSDL文件,生成WEB服务的服务器端源码;考虑到接口更改,版本管理的方便,生成代码不直接导向src目录;第一次运行后,需要手工将代码拷贝到src;每次修改接口后,必须清空生成源目录,通过比较工具修改src目录下的源文件,否则Axis判断[webapp]SoapBindingImpl.java已存在不会进行更新。-->
url="${basedir}/${wsdl.file}"
deployscope="Request"
output="${generated.path.src}"
serverside="true"
skeletondeploy="false"
testcase="true"
noimports="false"
>
拷贝Web服务发布、注销脚本,deploy.wsdd和undeploy.wsdd-->
发布WEB服务到WEB容器,Axis在WEB-INF/下自动生成server-config.wsdd-->
脚本方式发布服务-->
命令行方式发布服务-->
fork="true"
failonerror="true">
posted on 2005-08-12 22:46
笨笨
阅读(1039)
评论(0)
编辑
收藏
所属分类:
J2EE
、
ALL
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
简化JavaMail:小巧 Jakarta Commons-Email 简单教程
读"Under the Hood of J2EE Clustering" J2EE集群
Phase
x509数字证书介绍
SSL※ X509
了解安全性断言标记语言
架构蓝图--软件架构 "4+1" 视图模型
主动对象
Profile,Stereotype,TaggedValue与OCL漫谈
Drools 为你的业务逻辑提供框架(翻译)
Powered by:
BlogJava
Copyright © 笨笨