分享
 
 
 

在J2EE上部署Web服务(Web Services)(1)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Web服务继续从开发者那里得到动力。从2002年9月web服务概念首次引入时笨拙的定义

开始,现在已经发展到在2002年3月JavaOne上有63个会议是完全关于该主题的。(会议

幻灯片链接,见更多信息)。所以,随着Java 2 平台上开发Web服务关键软件包的更新

,我们决定更新Java 2 平台企业版(J2EE)上部署Web服务的基本指南。

J2EE的灵活性和可伸缩性使得它成为构建多层企业级应用的一个可选择平台。在J2EE平

台上部署Web服务是一个很自然的扩展。Java Web Services Developer Pack(Java WS

DP或JWSDP)是一个一体化的下载包,它包含了简化Java平台上构建Web服务的关键技术

。JWSDP是Sun和Java社团的其他成员共同开发的工具和API包。它可以帮助你迅速快捷地

开发Web服务。

你可以在J2EE上运行Java WSDP构件或者将构件与J2EE集成。本文先简略地介绍Web服务

,然后说明如何:

建立开发Web服务(JWSDP EA2)的J2EE 1.3.1环境

根据Sun Quality EXPectations(SQE)组的指南将Web服务与J2EE集成

根据SQE组的指南在J2EE上部署web服务示例。

在J2EE上运行web服务

这些指南覆盖了UNIX和Windows。一般的指导适合于Windows平台上的开发者,对于UNIX

上的例外使用UNIX前缀进行标识。屏幕画面是Windows平台的,但是因为JWSDP使用Swin

g,所以UNIX开发者也应该可以看到同样的画面。

注意:该指南是为JWSDP EA2编写的。如果你一直使用JWSDP EA1,那么下载EA2,它在几

个方面都有改进。

Web服务介绍

Web服务是确定从任何连接Internet的具有web服务能力的机器提供的服务。Web服务通过

一组基于XML的开放标准使得互操作性成为可能。商业上使用基于XML的Web服务描述语言

(Web Services Description Language,WSDL)描述它们的Web服务,并用一种基于XM

L的注册方式,如统一描述、发现和集成(Universal Description, Discovery and In

tegration,UDDI)协议,将它们列出来。 UDDI允许你查找公开的可访问的web服务,如

图1所示。客户向目录发送一个服务请求,目录通知客户符合请求条件的已注册服务。然

后使用SOAP,一种利用HTTP和XML作为交换机制的协议,在不同平台的应用程序之间进行

通信。

图1 Web服务协议

如果想了解更多的有关web服务的背景知识,可以参考更多信息中的介绍性资料。

下载和安装J2EE和JWSDP

如果还没有下载和安装J2EE SDK1.3.1和JWSDP EA2,则下载并安装该指南所介绍的J2EE

SDK1.3.1和JWSDP EA2。安装是自解压的(两个包都含有安装和配置手册),最主要的

配置步骤是要确保环境变量J2EE_HOME和JWSDP_HOME指向正确的安装路径,因为许多其他

的环境变量都依赖她们的配置。

JWSDP和J2EE集成

集成过程包括两项主要任务:将JWSDP相关的JAR文件添加到J2EE中,然后进行一些端口

配置并设置安全权限。

注意:如果安装了Ant build工具,则可以运行脚本:%JWSDP_HOME%injw2sdponj2ee

.bat (UNIX:$JWSDP_HOME/bin/jw2sdponj2ee.sh)。这些脚本使用一个安装JWSDP的b

in目录下的Ant build文件(jwsdponj2ee.xml)。如果让Ant执行配置过程,可以跳到下

一节了解如何在J2EE平台上打包和部署web服务。如果想了解内部机制,可以按照这里给

出的指南手工进行配置。关于Ant脚本的更多信息,请参看:%JWSDP_HOME%docsjwsdp

onj2ee.Html($JWSDP_HOME/docs/jwsdponj2ee.html)。

为了添加必要的JWSDP相关JAR文件,首先使用几个JWSDP JAR文件建立两个主要的JAR文

件(jwsdp-common.jar和jwsdp-endorsed.jar),然后将这两个新的JAR文件拷贝到正确

位置并进行一些配置。

建立jwsdp-common.jar文件

1、 建立一个临时目录(例如:%JWSDP_HOME%workjwsdp_jars)。(UNIX:$JWSDP_H

OME/work/jwsdp_jars)

2、 将下列JAR文件从%JWSDP_HOME%commonlib拷贝到%JWSDP_HOME%workjwsdp_jars

。%JWSDP_HOME%环境变量定义了安装JWSDP的绝对路径。例如,在我的Windows机器上,

它是c:jwsdp。(UNIX:从$JWSDP_HOME/common/lib拷贝到$JWSDP_HOME/work/jwsdp_j

ars。$JWSDP_HOME环境变量定义了安装JWSDP的home目录)

mail.jar

该JAR文件包含JavaMail API和所有的服务提供者(service provider)。

activation.jar

该JAR文件包含了组成JavaBeans Activiation Framwork(JAF)的类。

dom4j.jar dom4j.jar是一个针对Java的开放源代码XML框架。它允许读、写、定位、新

建和修改XML文档。它与DOM和SAX集成并与完全Xpath支持无缝集成。dom4j.jar文件包含

所有dom4j代码和Xpath引擎,但没有SAX和DOM接口。如果你使用JAXP和crimson.jar或x

erces.jar的话,就要使用该JAR文件。

jaxrpc-api.jar和jaxrpc-ri.jar 这两个JAR文件包含JAX-RPC API和基于XML远程过程调

用(Remote Procedure Call,RPC)Java API的参考实现,它们使得Java开发者可以根

据简单对象访问协议(SOAP)规范构建基于XML RPC功能的web应用程序和web服务。

jaxm-api.jar和jaxm-client.jar 这两个JAR文件包含支持XML 消息传输的Java API参考

实现 。JAXM是一个发送和接受SOAP消息的基于XML的消息传输系统。

jaxr-api.jar和jaxr-ri.jar 这两个JAR文件包含了JAXR或者说支持XML注册的Java API

参考实现。JAXR提供了访问不同类型XML注册的统一标准。它包括JAXR信息模型和ebXml

注册及UDDI注册规范之间的详细绑定。

jaxp-api.jar JAXP是支持XML处理的Java API。它支持利用DOM、SAX和XSLT处理XML文档

castor-0.9.3.9-xml.jar Castor是一个XML数据绑定框架。不像处理XML文档结构的DOM

和SAX,Castor可以通过代表数据的对象模型处理定义在XML文档中的数据。Castor可以

从XML建立几乎所有的如bean的Java对象,或相反。

commons-logging.jar 该JAR文件包含了一个日志记录库包

fscontext.jar和providerutil.jar 这两个JAR文件包含文件系统服务provider。

3、 将下列JAR文件从%JWSDP_HOME% oolsjstl拷贝到%JWSDP_HOME%workjwsdp_jar(

UNIX:从$JWSDP_HOME/tools/jstl拷贝到$JWSDP_HOME/work/jwsdp_jar)。

jstl.jar

standard.jar

这两个JAR文件提供了jsp标准标签库的实现。

4、 将provider.jar从%JWSDP_HOME%servicesjaxm-providerWEB-INFlib拷贝到%JW

SDP_HOME%workjwsdp._jars(UNIX:从$JWSDP_HOME/services/jaxm-provider/WEB-I

NFlib拷贝到$JWSDP_HOME/work/jwsdp._jars)。

provider.jar是一个JAXM provider,JAXM provider是路由和传输消息的消息传输服务

。它所做的一切对用户都是透明的。只有当应用程序异步(或单向)通信时才需要JAXM

provider。

5、 将目录改变为从%JWSDP_HOME%workjwsdp_jars(UNIX:$JWSDP_HOME/work/jwsdp

_jars)。

6、 利用目录%JWSDP_HOME%workjwsdp_jars(UNIX:$JWSDP_HOME/work/jwsdp_jars)

下的文件建立jwsdp-common.jar。如下:

jar -cvf %JWSDP_HOME%workjwsdp-common.jar .

注意命令末尾的点。

(UNIX:jar -cvf $JWSDP_HOME/work/jwsdp-common.jars . 注意命令末尾的点。)

现在%JWSDP_HOME%work下就有了一个jwsdp-common.jar(UNIX:$JWSDP_HOME/work)。

建立jwsdp-endorsed.jar文件

1、 建立一个临时目录(例如:%JWSDP_HOME%workendorsed_jars)。(UNIX:$JWSD

P_HOME%/work/endorsed_jars)

2、 将下列JAR文件从%JWSDP_HOME%commonendorsed拷贝到%JWSDP_HOME%workendor

sed_jars。(UNIX:从%JWSDP_HOME%/common/endorsed拷贝到$JWSDP_HOME%/work/endo

rsed_jars。)

sax.jar SAX是支持XML的简单API(Simple API for XML)。该JAR文件包含SAX的实现。

dom.jar DOM是文档对象模型。该文件包含DOM的实现。

xercesImpl.jar 该JAR文件包含所有实现解析器支持的标准API的解析器类。

xalan.jar 该JAR文件包含XSLT样式表处理器。它实现了XSLT和Xpath。

xsltc.jar 该JAR文件提供了一个XSLT样式表的编译器和运行时处理器。

3、 将目录改变到%JWSDP_HOME%workendorsed_jars(UNIX:$JWSDP_HOME%/work/end

orsed_jars)。

4、 利用目录%JWSDP_HOME%workendorsed_jars 下的JAR文件建立jwsdp-endorsed.ja

r(UNIX:$JWSDP_HOME%/work/endorsed_jars),如下:

jar -cvf %JWSDP_HOME%workjwsdp-endorsed.jar .

注意命令末尾的点。

(UNIX:jar -cvf $JWSDP_HOME%/work/jwsdp-endorsed.jar .)

现在%JWSDP_HOME%work目录下就有了一个jwsdp-endorsed.jar文件(UNIX:$JWSDP_HO

ME%/work)

将JAR文件拷贝到正确位置并设置类路径:

1、 在%J2EE_HOME%libsystem目录下建立一个名为endorsed的目录(UNIX:$J2EE_HO

ME/lib/system)。这个在J2SDK1.4中引入的系统属性指定了Java运行时系统查找JAR文

件的目录。

2、 将jwsdp-endorsed.jar从%JWSDP_HOME%work拷贝到%J2EE_HOME%libsystemendo

rsed(UNIX:$J2EE_HOME/lib/system/endorsed)

3、 打开J2EE环境配置脚本文件%J2EE_HOME%libsetenv.bat(UNIX:$J2EE_HOME/lib

/setevn.sh),在这里设置J2EE环境变量,将jwsdp-endorsed.jar插入CPATH的开始位置

set CAPTH= %SYSTEM_LIB_DIR%endorsedjwsdp-endorsed.jar;%CLOUDJARS%;%CLASSES

DIR%

CPATH的其他部分应该保持不变。在UNIX下:CPATH=$SYSTEM_LIB_DIR/endorsed/jwsdp-

endorsed.jar 等等。

4、 打开用户配置脚本文件 %J2EE_HOME%inuserconfig.bat(UNIX:$J2EE_HOME/bi

n/userconfig.sh)并将jwsdp-common.jar通过下列操作添加到J2EE_CLASSPATH中:

通过去掉J2EE_CLASSPATH前面的rem使J2EE_CLASSPATH生效。

在J2EE_CLASSPATH前新增加定义SYSTEM_LIB_DIR的一行,如下: set SYSTEM_LIB_DIR=

%J2EE_HOME%libsystem (UNIX: SYSTEM_LIB_DIR=$J2EE_HOME/lib/system)

设置J2EE_CLASSPATH如下:

set J2EE_CLASSPATH=%SYSTEM_LIB_DIR%jwsdp-common.jar (UNIX: J2EE_CLASSPATH=$

SYSTEM_LIB_DIR/jwsdp-common.jar)

5、 打开J2EE服务器脚本文件%J2EE_HOME%inj2ee.bat(UNIX: $J2EE_HOME/bin/j2e

e.sh),在文件的最后一行找到the %JAVA_COMMAND% (UNIX: JAVACMD),然后指定系统

属性java.endorsed.dirs如下:

%JAVA_COMMAND%-Djava.endorsed.dirs=%J2EE_HOME%libsystemendorsed (其余行保

持不变) -classpath %CPATH% com.sun.enterprise.server.J2EEServer and so on)

(UNIX: $JAVACMD -Djava.endorsed.dirs=$J2EE_HOME/lib/system/endorsed 等等)

注意:系统属性java.endorsed.dirs指定了Java运行时环境查找JAR文件的一个或多个目

录。只有当在J2SDK1.4上运行J2EE SDK1.3.x时才设置该系统属性。

配置web服务器端口和设置安全权限

1、 打开文件%J2EE_HOME%configweb.properties (UNIX: $J2EE_HOME/config/web.

properties)将http.port号码从8000改成8080,因为JWSDP使用的Tomcat web服务器缺

省情况下使用8080端口,一些JWSDP示例程序也使用这个端口。web.properties文件用来

设置web属性(如端口号、HTML根目录、日志文件等等)。因此http.port=8080是HTTP服

务用来服务请求的端口。

2、 打开文件%J2EE_HOME%libsecurityserver.policy (UNIX: $J2EE_HOME/lib/sec

urity/server.policy),然后在文件的末尾缺省域中指定下列权限:

permission java.io.FilePermission "", "read,write,delete";

permission java.util.PropertyPermission "*", "read,write";

permission java.lang.RuntimePermission "modifyThreadGroup";

server.policy是J2EE服务器的Java 安全策略文件。它包含J2EE引擎的Java 安全策略设

置和授权给一个程序特定访问的权限。

添加到安全策略文件中的第一行授权在所有文件上有读、写和删除的权限。第二行允许

读和写任何系统属性。读权限允许调用System.getProperty。写权限允许调用System.s

etProperty。第三行是运行时权限。在本例中,这个属性运行通过调用ThreadGroup的d

estroy, getParent, resume, setDaemon, setMaxPriority, stop 和 suspend方法修改

线程组。你需要所有这些权限运行JWSDP附带的JAXM Provider Admin Tool,jaxm-remot

e.jar和jaxm-soaprp例子。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有