- 浏览: 3503193 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
本文讨论WebLogic Server 9(下简称WLS9)中的新特性:Java Web Service (JWS)。WLS9的Web
Services子系统实现了J2EE 1.4中的Web Services的新标准: Enterprise Web Services 1.1
specification (JSR-921)。该规范定义了标准的J2EE Web Service打包格式,部署模块以及运行时服务。
JSR-921是J2EE 1.3中Web Services规范JSR-109的1.1维护版本。在Web Services
1.1中描述了J2EE Web
Service的业务逻辑有两种实现方式:一种是使用Web容器中的JavaBean,另一种是使用EJB容器中的无状态Session
Bean。与旧的Web Services开发方式不同,BEA建议使用JWS这种基于注释的Web
Services编程方式以简化开发。这种编程方式的开发过程大概是这样,利用JDK5的新特性元数据注释(JSR-175),在编写上述的Java
Bean或EJB的Bean类时在业务逻辑代码中添加一些特殊注释,然后用ANT的一些扩展任务可以生成一些相关JAVA类代码(主要是EJB的存根、
桩)和配置文件,最后自动编译这些类代码并自动打包。所以可以说JWS方式是Web
Services新标准的核心。JWS文件实际就是普通的.JAVA文件(扩展名依旧是.JAVA),通过添加注释来制定WS的特性。这些注释在
JSR181中有完整的说明。如果Web Service用Java Bean类实现,自动打包后会包含web.xml,weblogic.xml,
webservices.xml,weblogic-webservices.xml,JAX-RPC数据类型映射文件和WSDL等,并被打包成标准
Web应用的WAR。如果用EJB实现,则会包含ejb-jar.xml和weblogic-ejb.jar.xml等,并被自动打包成标准EJB的
JAR。下图描述了JWS文件生成可部署的J2EE模块的详细过程。后面我们会用两个例子详细说明如何开发、部署基于Java
Bean和基于EJB的Web Services。
JSR181与JSR175介绍
我们先来看一段典型的使用JSR175特征的代码。
package webservices.jsr181.pojo;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService(name="StringChangerPort", targetNamespace="http://wwtt.bea.com")
public class StringChanger {
@WebMethod()
public String toUpper(String upperReqString)
{
……
这个类的源代码和普通的JAVA代码没太多区别,但和普通JAVA代码不同的是这里面还包含了很多以@开头的代码,或者称为注释,也就是在Java
5中的新语法,JSR-175。JSR-175规范只是定义这种语法规则,而用这种语法来如何将这个类生成一个Web
Service接口,则需要由JSR-181规范来决定。所以这些JSR-175的注释才真正决定了这个Web Service的行为和外观。
也许你会觉得这种语法比较奇怪,有些像普通java方法的语法,只是前面多了一个@。实际在JSR175规范的早期,该语法并不是像现在这样的。如果按早期写法,@WebService()会该写为:
网管u家u.bitscn@com
/**
* @WebService(......)
*/ 后来出于简化,成了现在的样子。如果使用Weblogic Platform
7.x或8.x产品,会在许多其专有的代码文件中看到这种格式的注释。由于撰写本文时Weblogic Platform
9还没有发布。发布后是否那些专有代码会使用基于JSR-175的语法还不得而知,但可以确定的是在Weblgic Server
9中这种语法已经被全面支持了,无论在Web Service中,还是在EJB中。
事实上JSR
181是BEA提出的用于加速Web Services开发的一种基于注释驱动的编程模式,并被批准纳入到J2EE
1.5标准。JSR181提供了一种简单的Web
Service开发编程模型和标准的编译及部署方式。只需要编写JSR-175风格的注释就可以制定WSDL,消息产生属性,安全认证方式,以及特定的消
息头。
练习的预备工作
准备必要软件。
进行
练习前需要预先安装WLS9正式版,可以到BEA官方网站上免费下载。本练习可在能安装WLS9的任何操作系统上完成,为了方便起见,文中仅以在
Windows XP上开发为例。此外本文中代码的开发环境为Eclipse
3.1及对应的Lomboz,当然如您所愿任何其他支持ANT的开发环境都是可以的。
配置Weblogic Server。
准备好上述软件后,首先用配置创建一个新的WLS Domain。记得用户名和密码要都设为weblogic,端口为7001。创建好后启动该Domain,并用浏览器启动相应的Console,用帐户weblogic/weblogic登录进入。
配置Eclipse。
如果希望Eclipse的配置尽量吻合本文的环境,可参考我的另一篇文章:“使用Eclipse加速Weblogic
Server开发”的第一步到第二步。配置好后在Eclipse的File->New Project中选取Java
Project,在Project Name中将我们这个练习的名字设为JSR-181 Web Services或任何你喜欢的名字,JDK
Compliance中选择“Use a project specific compliance
5.0”,其余保持默认。一个符合我们需要的Project就建好了。
修改脚本文件。
本练习所有的构建过程都由ANT来完成,因此我们需要添加一些ANT的脚本配置文件。属性文件,宏定义文件可以完全参照《使用Eclipse加速Weblogic Server开发》,因此只需要吧那里面的那三个文件拿过来用就可以了。
需要修改的是build.xml文件,这里定义的属性主要是为后面两个例子设置一些路径。
<?xml version="1.0"?>
<project name="WLS v9 JSR-181 Web Services" basedir=".">
<property file="wls-build-tools/weblogicServer.properties" />
<import file="wls-build-tools/weblogicServer.macrodef" />
<taskdef file="wls-build-tools/weblogicTasks.properties" classpathref="jwsbuild.class.path" />
<property name="apps.src.dir" location="." />
<property name="apps.dest.dir" location="${temp.dir}" />
<property name="clients.src.dir" location="." />
<property name="clients.dest.dir" location="${temp.dir}" />
<property name="clients.package.name" value="client.test"/>
<property name="clients.package.path" value="client/test"/>
<property name="jbApp.context.name" value="jb" />
<property name="jbApp.package.name" value="webservices.jsr181.pojo"/>
<property name="jbApp.src.dir" location="${apps.src.dir}/webservices/jsr181/pojo"/>
<property name="jbApp.jwsSource.file" value="StringChanger.java" />
<property name="jbApp.dest.dir" location="${apps.dest.dir}/${jbApp.context.name}" />
<property name="jbApp.service.name" value="StringChangerService" />
<property name="jbApp.wsdl.url"
value="http://${domain.address}:${domain.port}/${jbApp.context.name}
/${jbApp.service.name}?WSDL" />
<property name="jbApp.deploy.name" value="WLS v9 JSR-181 Javabean Web Service" />
<property name="ejbApp.context.name" value="ejb" />
<property name="ejbApp.package.name" value="webservices.jsr181.ejb"/>
网管论坛bbs_bitsCN_com
<property name="ejbApp.src.dir" location="${apps.src.dir}/webservices/jsr181/ejb"/>
<property name="ejbApp.jwsSource.file" value="PurchaseOrder.java" />
<property name="ejbApp.dest.dir" location="${apps.dest.dir}/${ejbApp.context.name}" />
<property name="ejbApp.service.name" value="PurchaseOrderService" />
<property name="ejbApp.wsdl.url"
value="http://${domain.address}:${domain.port}/${ejbApp.context.name}
/${ejbApp.service.name}?WSDL" />
<property
name="ejbApp.wsdl.local"
value="jar:file:${apps.dest.dir}/${ejbApp.context.name}
/PurchaseOrder.jar!/META-INF/${ejbApp.service.name}.wsdl" />
<property name="ejbApp.deploy.name" value="WLS v9 JSR-181 EJB Web Service" />
<path id="jwsbuild.class.path">
<fileset dir="${weblogic.home}/server/lib">
网管u家u.bitscn@com
<include name="weblogic.jar" />
<include name="xbean.jar" />
</fileset>
<fileset dir="${jdk5.home}/lib">
<include name="tools.jar" />
</fileset>
</path>
<path id="javabuild.class.path">
<pathelement path="${clients.dest.dir}" />
<fileset dir="${weblogic.home}/server/lib">
<include name="webserviceclient.jar" />
</fileset>
</path>
<!--后面的练习中我们将根据需要在此添加一些target。-->
</project>
如何快速查看例子的结果,而跳过开发环节。
做好1到4步骤就可以按照后面几节所述完成练习。但如果想快速看一下练习结果,将本文附件solution包括所有源代码。解压到您磁盘任何位置,用
Eclipse创建好一空的名为JSR-181 Web Services的Project后,用solution解出的JSR-181 Web
Services文件夹替换这个Project的文件夹。最后在Eclipse的Package
Explorer中刷新一下,就浏览已经开发配置好Eclipse
Project代码了。修改项目的wls-build-tools路径下weblogicServer.properties中的WLS和JDK环境变
量,然后就可以执行ANT脚本中的任务来编译,部署,测试等步骤。
网管联盟bitsCN_com
开发基于JavaBean的Web Services
基于JavaBean的Web Servics是最简单的一种方式。我们只需要在普通的JavaBean码中添加一些符合JSR181的注释,在build.xml中调用WLS提供的扩展ANT Task,就可以完成一个完整的Web Services。
创建一个Java Bean。
在Project的根目录下创建一个类名为StringChanger,包名为webservices.jsr181.pojo,写入如下内容:
package webservices.jsr181.pojo;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import weblogic.jws.WLHttpTransport;
@WebService(name="StringChangerPort", targetNamespace="http://bea.com")
@SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.ENCODED)
@WLHttpTransport(contextPath="jb", serviceUri="StringChangerService")
public class StringChanger {
@WebMethod()
public String toUpper(String upperReqString)
中国网管论坛bbs.bitsCN.com
{
String upper = upperReqString.toUpperCase();
System.out.println("toUpper Request: " + upperReqString);
System.out.println("toUpper Reply: " + upper);
return(upper);
}
@WebMethod(operationName="toLower")
public String toLowerCase(String lowerReqString)
{
String lower = lowerReqString.toLowerCase();
System.out.println("toLowerCase Request: " + lowerReqString);
System.out.println("toLowerCase Reply: " + lower);
return(lower);
}
}
这个类是用于实现我们这个Web Services模块的业务逻辑,以及描述这个Web
Service接口。该类中包含两个public的业务方法:toUpper(String):
String和toLowerCase(String):
String。其中的逻辑也很简单:前者将传入的字符串全变成大写,后者则全变成小写。并且两个方法都将在终端上将操作过程打印出来。除了这两法方法,其
余都是用于描述Web Service接口的JSR-181注释。
先看一些类级别的注释。@WebService()表示这个类
可以生成Web
Service。name用于映射到WSDL文件的<wsdl:portType>元素,可以在生成的WSDL中找
到<wsdl:portType>的值为StringChangerPort。targetNamespace用于指定WSDL文件中元素的
命名空间,能在生成的WSDL中找到对应的targetNamespace="http://bea.com"。@SOAPBinding()表示这个服
务可以映射到一个SOAP消息中。Style用于指定SOAP消息请求和回应的编码方式为RPC。use用于指定SOAP消息请求和回应是明文还是密文,
此处表示为密文。@WLHttpTransport是一个Weblogic专用的注释,用于指生成的配置文件中的上下文路径和这个Web
Service的URI。contextPath用于指定上下文路径为jb,也就是说可以用 http://localhost:7001/jb/
这个URL来调用这个Web Services应用。serviceUri表示客户端访问这个Web Service的URI为
http://localhost:7001/jb/StringChangerService。
再看一些方法级别的注释。方法级注释为@WebMethod()。operationName为操作的名字,用于映射到WSDL文件
的<wsdl:operation>元素。默认值为对应的方法名。因此在这个JavaBean生成的Web
Service中toUpper方法对应的操作名为toUpper,toLowerCase方法对应的操作名为toLower。
编写build.xml Target。
<target name="build.jb" depends="clean.jb">
<jwsc srcdir="${jbApp.src.dir}" destdir="${jbApp.dest.dir}" listfiles="true" classpathref="jwsbuild.class.path">
<jws file="${jbApp.jwsSource.file}" />
</jwsc>
</target>
<target name="deploy.jb" depends="check.jb" if="jb.exists">
<wls.deploy deploy.dir="${jbApp.dest.dir}" deploy.name="${jbApp.deploy.name}" />
</target>
build.jb 这个Target主要用于建立一个可部署的Web Services模块。jwsc这个任务是用于分析JWS文件中的注释,生成对应JAVA文件配置文件,编译代码,最后在destdir指定的位置生成这个Web Services的WAR包。 网管bitscn_com
deploy.jb这个Target主要用于把Web Service模块部署到WLS Domain中。wls.deploy是一个在weblogicServer.macrodef中定义的Task,调用WLS的ANT扩展任务wldeploy。
编译Web Services。
现在我们在ANT View中执行任务build.ws.pojo,可以看到在Console窗口显示出对应的操作过程。
Buildfile: C:\project\eclipse31\workspace\JSR-181 Web Services\build.xml
clean.jb:
[delete] Deleting directory C:\temp\jb
[mkdir] Created dir: C:\temp\jb
build.jb:
[jwsc] 1 JWS files will be processed.
[jwsc] Processing JWS: C:\project\eclipse31\workspace\JSR-181 Web Services\webservices\jsr181\pojo\StringChanger.java
[jwsc] JWS: C:\project\eclipse31\workspace\JSR-181 Web Services\webservices\jsr181\pojo\StringChanger.java Validated.
[jwsc] Compiling 2 source files to c:\temp\_ukbwfm
[jwsc] C:\TEMP\_ukbwfm\StringChangerPortType.java
[jwsc] C:\project\eclipse31\workspace\JSR-181 Web Services\webservices\jsr181\pojo\StringChanger.java
[jwsc] Building war: C:\temp\jb\StringChanger.war
[jwsc] Created JWS deployment file: C:\temp\jb\StringChanger.war
[AntUtil.deleteDir] Deleting directory c:\temp\_ukbwfm
BUILD SUCCESSFUL
Total time: 22 seconds
打开目录C:\TEMP\jb,我们能看到生成了两个文件夹和一个WAR文件。在文件夹META-INF下的
application.xml中的<web-uri>元素的值来自JWS中的注释@WLHttpTransport。打开生成的WAR文件
我们能看WEB-INF路径下已经生成了一些对应的配置文件。查看其中的WSDL文件名为StringChangerService.wsdl,这也是来
自JWS中的注释@WLHttpTransport。在WSDL文件中能看到targetNamespace为http://wwtt.bea.com,
这是来自JWS中的注释@WebService。同样我们能在该文件中看到service元素中port为StringChangerPort,也是来自
@WebService。在这个文件中包括了两个operation元素,name分别为toLower和toUpper,对应到JWS中两个注释
@WebMethod。同时我们能看到对应的style为rpc,use为encoded。这些都符合我们在JWS的@SOAPBinding注释中的设
置。同时我们能看到该WAR的WEB-INF\classes\webservices\jsr181\pojo
目录中包含两个class文件:StringChanger.class内是StringChanger.java描述的业务逻
辑,StringChangerPortType是为这个类生成的接口。StringChangerPortType会在后面生成Web
Services代码时被自动调用。
public interface StringChangerPortType extends Remote{
public abstract String toLowerCase(String s)
throws RemoteException;
public abstract String toUpper(String s)
throws RemoteException;
}
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74151在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3759原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23494Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2134FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5524我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2347WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1566Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2122终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14841大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1711charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22627Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4884来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2375本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8699一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2906近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3703目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2542Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2101由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3005安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1854本文介绍物理地址扩展 ...
相关推荐
五、WebLogic Server 11g的新特性 1. **Improved Performance**:优化了内存管理和JVM,提升了运行效率。 2. **Enhanced Security**:增强了安全性,包括对SSL/TLS的加强和身份验证机制的改进。 3. **JMX (Java ...
本教程“Oracle Weblogic Server 11gR1 PS2: Administration Essentials”涵盖了WebLogic Server的基本管理和高级特性,旨在帮助管理员有效管理WebLogic域和应用程序。 1. **WebLogic Server安装与配置**: - 安装...
### Weblogic 10.3 新特性中文版 #### 概述 Oracle WebLogic Server 10.3 是 Oracle 公司推出的一款企业级 Java 应用服务器,它提供了强大的功能来支持各种 Java 应用程序和服务。WebLogic 10.3 的发布带来了许多...
WSDL(Web Services Description Language)是一种 XML 格式的文档,用于描述 Web 服务的接口和绑定。WSDL 包含三个主要部分: - **接口(Interface)**:定义了服务的抽象操作和消息。 - **绑定(Binding)**:指定...
### Oracle WebLogic Server 11g: Diagnostics and Troubleshooting #### 知识点一:Oracle WebLogic Server 11g 概述 - **版本介绍**:Oracle WebLogic Server 11g(版本号10.3.6)是Oracle公司推出的一款企业级...
《Oracle WebLogic Server 11g: Administration Essentials》是一套专为学习和掌握Oracle WebLogic Server 11g管理核心概念和技术而设计的教材。该教材由两本学生指南和一本实验指南组成,旨在帮助学员深入理解...
### 中间件与Web Services知识点解析 #### 一、中间件概述 中间件是一种位于网络层和应用层之间的软件层,其主要功能是为不同平台的应用程序提供一系列的基础服务,如身份验证、权限管理、目录服务及安全性等。在...
- **概述**:WebLogic Server 9.0 支持各种 Web Services 标准和技术,如 SOAP、WSDL、WS-Security 等,使开发人员能够轻松创建和管理 Web 服务。 - **意义**:有助于实现企业之间的互操作性和集成。 ##### 5. **...
WebLogic Server 9 是一款由 Oracle 公司提供的企业级应用服务器,用于部署和管理Java应用程序,特别是基于Java EE(Enterprise Edition)的应用。在Linux环境下安装WebLogic Server 9需要遵循一系列步骤,以下是对...
weblogic10.3.6最新补丁 【2022-1-18日】发布的最新补丁 weblogic10.3.6最新补丁 【2022-1-18日】发布的最新补丁 weblogic10.3.6最新补丁 【2022-1-18日】发布的最新补丁 weblogic10.3.6最新补丁 【2022-1-18日】...
2. **Web服务的开发**:讲解如何使用Java API for XML Processing (JAXP)、Java API for XML Web Services (JAXWS)以及可能的 Axis 或 Metro 框架在WebLogic Server上创建Web服务。这可能包括定义服务接口、实现服务...
- `C:\BEA\WebLogic81\server\lib\webservices.jar` 2. **数据库驱动类库**: - 如果项目中需要用到数据库,还需添加相应的数据库驱动类库。 - 例如,如果使用 WebLogic 自带的 SQL Server 驱动,则需要添加相应...
WebLogic Server 9 是 BEA Systems(现已被甲骨文公司收购)开发的一款Java应用服务器,主要用于构建、集成、部署和管理大型分布式Web应用程序、网络应用程序以及数据库应用程序。它提供了强大的性能、可扩展性和高...
在IT行业中,搭建Web工程和部署WebLogic开发环境是开发者必备的技能之一。WebLogic Server是由Oracle公司提供的一个企业级Java EE应用服务器,它为构建、部署和管理企业级应用程序提供了强大的支持。以下是对这个...
Weblogic9安装配置指南 本文档旨在帮助读者成功安装和配置Weblogic9,从安装成功后的弹出窗口到配置数据源的每一个步骤都将被详细介绍。 一、安装成功后的弹出窗口 在Weblogic9安装成功后,会弹出一个窗口,地址...
在本文中,我们将深入探讨如何在 WebLogic 服务器上部署Web应用程序以及如何更改WebLogic的发布端口。 首先,部署Web应用程序通常涉及以下步骤: 1. **打包应用程序**:对于Web应用程序,我们通常将其打包成WAR...
java -cp bea9\weblogic91\server\lib\weblogic.jar weblogic.security.utils.AdminAccount weblogic weblogic . \] 运行该命令后,将在当前目录下生成一个名为`DefaultAuthenticatorInit.ldift`的新文件。 ###...
完成以上步骤后,WebLogic 9.x 已经配置了与 Oracle 数据库的连接,并部署了 Web 项目。这使得应用程序能够访问数据库并提供服务。在实际生产环境中,还可能需要进行安全设置、性能调整、监控等高级配置。务必确保在...
WebLogic 服务器是 BEA Systems(现已被 Oracle 公司收购)开发的一款企业级 Java 应用服务器,专门用于构建、部署和管理大型分布式 Web 应用、网络应用以及数据库应用。它支持 Java 平台的企业版标准,提供了强大的...
#功能:weblogic守护进程:监控weblogic进程,当发现进程停止时调用重启脚本重启 #参数:进程唯一标识码,例如“weblogic” #依赖脚本:数据库操作脚本dbExecurteSQL.sh,weblogic重启脚本$PSSC_DOMAIN/startPssc.sh...