以下部分描述如何升级 9.2 WebLogic
Server Web Service 之前的版本,使其在 9.2 Web Service 运行时环境中运行:
将 9.0 或 9.1 WebLogic Web
Service 升级到 9.2
如果 9.0/9.1 Web Service 使用了以下任何功能,则必须先重新编译 Web Service,然后再将它重新部署到
WebLogic Server 9.2:
- 对话
- @weblogic.jws.Context JWS 批注
- weblogic.wsee.jws.JwsContext API
- 要重新编译,只需针对实现 Web Service 的 JWS 文件重新运行 jwsc Ant
任务。
如果 9.0/9.1 Web Service 未使用这些功能,则可以将它重新部署到 WebLogic
Server 9.2,而无需对它进行任何更改或重新编译它。
将 8.1 WebLogic Web Service
升级到 9.2
本部分描述如何升级 8.1 WebLogic Web Service 以使用新版的 9.2 Web Service 运行时环境。9.2
运行时基于 Implementing Enterprise Web Services 1.1 规范(JSR-921,它是 JSR-109
的 1.1 维护版本)。9.2 编程模型使用 Web Services Metadata for the Java Platform
规范 (JSR-181) 中指定的标准 JDK 1.5 元数据批注。
注意: 8.1 WebLogic Web Service 将继续一如既往地运行在 9.2 版的
WebLogic Server 上,因为尽管不赞成使用它,并且会在未来版本中将其从产品中删除,但 8.1 Web Service
运行时在 9.2 中仍旧受支持。因此,BEA 极力建议按照本文档中的说明将 8.1 Web Service 升级到 9.2。
升级 8.1 Web Service 包括下列高级别任务;后面的部分中更加详细地描述了具体过程:
- 更新实现 Web Service 的 Java 类或无状态会话 EJB 的 8.1 Java
源代码,以便该源代码使用 JWS 批注。
9.2 版的 WebLogic Web Service 是使用 JWS 文件(即包含 JWS 批注的 Java 文件)实现的。除非在
JWS 文件中明确实现 javax.ejb.SessionBean,否则,jwsc Ant 任务始终将 Web Service
作为常规 Java 文件实现。前一种情况并不典型。此编程模型不同于 8.1 的编程模型,对于后者,需要指定后端组件的类型(Java
类或 EJB)。
- 更新生成 Web Service 的 Ant 生成脚本以调用 9.2 WebLogic
Web Service Ant 任务 jwsc 而不是 8.1 servicegen 任务。
后面的部分假设:
- 您以前曾使用 servicegen 来生成 8.1 Web Service,更常见的情况是,在开发环境中使用
Ant 脚本以迭代方式开发 Web Service 以及在 WebLogic Server 上运行的其他 J2EE 工件。本部分中的过程指示您更新现有
Ant build.xml 文件。
- 您有权访问 8.1 Web Service 的 Java 类或 EJB 源代码。
本部分不讨论下列主题:
- 升级 JMS 实现的 8.1 Web Service。
- 将 Web Service 从以前的版本升级到 8.1。
- 将调用 8.1 Web Service 的客户端应用程序升级为调用 9.2 Web Service
的客户端应用程序。有关如何编写调用 9.2
- Web Service 的客户端应用程序的详细信息,请参阅调用 Web Service
- 将 8.1 Java 类实现的 WebLogic Web Service 升级到 9.2:主要步骤
要升级 8.1 Java 类实现的 Web Service 以使用 9.2 WebLogic
Web Service 运行时,请执行下列操作:
- 打开命令窗口并通过执行 setDomainEnv.cmd (Windows) 或 setDomainEnv.sh
(UNIX) 脚本(位于 9.2 域目录的 bin 子目录中)来设置 WebLogic Server 9.2 环境。
WebLogic Server 域的默认位置是 BEA_HOME/user_projects/domains/domainName,其中
BEA_HOME 是 BEA 产品的顶级安装目录,domainName 是域名。
- 创建项目目录:
prompt> mkdir /myExamples/upgrade_pojo
- 在项目目录下创建一个 src 目录以及与新的 9.2 JWS 文件(在此过程中的后面部分显示,与旧的
8.1 Java 类对应)的包名对应的子目录:
prompt> cd /myExamples/upgrade_pojo prompt> mkdir src/examples/webservices/upgrade_pojo
- 将实现 8.1 Web Service 的旧 Java 类复制到工作目录的 src/examples/webservices/upgrade_pojo
目录中。根据需要将文件重命名。
- 按照下列步骤中的描述编辑 Java 文件。请参阅8.1 Java 文件和对应的 9.2
JWS 文件的示例中的新旧示例 Java 文件以获取特定示例。
- 如果需要,请更改 Java 文件的包名和类名以反映新的 9.2 源环境。
- 添加 import 语句以导入标准的 JWS 批注和 WebLogic 特定的 JWS
批注。
- 至少添加以下 JWS 批注:
- Java 类级的标准 @WebService 批注,用于指定使用 JWS 文件实现
Web Service。
- BEA 建议还要添加下列批注:
- 类级的标准 @SOAPBinding 批注,用于指定 Web Service
的类型,如 document-literal-wrapped 或 RPC-encoded。
- WebLogic 特定的类级 @WLHttpTransport 批注,用于指定在调用已部署的
Web Service 的 URL 中使用的上下文和服务 URI。
- 方法级的标准 @WebMethod 批注,针对公开为 Web Service
操作的每个方法。
有关在 Java 文件中使用 JWS 批注的常规信息,请参阅JWS 文件编程。
- 可能需要向 JWS 文件中添加其他批注,具体取决于要在 9.2 中继续使用哪些 8.1
Web Service 功能。在 8.1 中,这些功能中有许多是使用 servicegen 的特性配置的。要获得在 8.1
中使用 servicegen 特性所启用功能的等同 JWS 批注(如果有)一一列出的表,请参阅将 servicegen
特性映射到 JWS 批注或 jwsc 特性。
- 将生成 8.1 Web Service 的旧 build.xml 文件复制到 9.2 工作目录中。
- 更新 Ant build.xml 文件以将 jwsc Ant 任务与其他支持任务(而不是
servicegen)一起执行。
BEA 建议在 Ant 生成文件中创建一个新目标(如 build-service)并添加 jwsc Ant 任务调用以编译在前面的步骤中创建的新
JWS 文件。一旦该目标正常运行,便可以删除旧的 servicegen Ant 任务。
以下过程列出了用于更新 build.xml 文件的主要步骤;有关这些步骤的详细信息,请参阅WebLogic Web Service
的迭代开发中概述的标准迭代开发过程。
有关以下过程中的步骤的特定示例,请参阅用于 Java 类实现的 Web Service 的 8.1 和已更新 9.2 Ant
生成文件的示例。
- 将 jwsc taskdef 添加到 build.xml 文件中。
- 根据下列步骤所述,创建一个 build-service 目标并添加生成 9.2
Web Service 所需的任务。
- 将 jwsc 任务添加到生成文件中。将 srdir 特性设置为 src 目录(在本示例中,为
/myExamples/upgrade_pojo/src),并将 destdir 特性设置为在上一步中创建的企业应用程序根目录。
将 <jws> 子元素的 file 特性设置为在此过程中的前面部分创建的新 JWS 文件的名称。
- 根据要继续在 9.2 中使用的 8.1 Web Service 功能,可能需要指定 jwsc
任务的其他特性。在 8.1 中,这些功能中有许多是使用 servicegen 的特性配置的。有关描述您使用 servicegen
特性启用的功能是否存在等同的 jwsc 特性的表,请参阅将 servicegen 特性映射到 JWS 批注或 jwsc 特性。
执行 build-service Ant 目标。假设所有任务均成功完成,则生成的企业应用程序包含已升级的
9.2 Web Service。
有关部署和测试 Web Service 的其他信息,请参阅部署和取消部署 WebLogic Web Service 和浏览到 Web
Service 的 WSDL。
根据下面部分中显示的示例 Java 代码,用于调用已升级的 9.2 Web Service 的
WSDL 的 URL 是:
http://host:port/upgradePOJO/HelloWorld?WSDL
8.1 Java 文件和对应的 9.2 JWS 文件的示例
package examples.javaclass;
/**
* 用于实现 HelloWorld Web Service 的简单 Java 类。它将
* 整数和字符串用作输入,并返回包括这两个参数
* 的消息。
*
* @作者版权所有 (c) 2005,BEA Systems。保留所有权利。
*/
public final class HelloWorld81 {
/**
* 返回包括整数和字符串输入参数的
* 文本消息。
*
*/
public String sayHello(int num, String s) {
System.out.println("sayHello operation has been invoked
with arguments " + s + " and " + num);
String returnValue = "This message brought to you by the
letter "+s+" and the number "+num;
return returnValue;
}
} |
假设以下示例 Java 类实现了 8.1 Web Service:
下面所示为 9.2 Java 类实现的 Web Service 的等同 JWS 文件,区别以粗体显示。请注意,有些 JWS 批注值取自用于
Java 类实现的 Web Service 的 8.1 和已更新 9.2 Ant 生成文件的示例中显示的 8.1 servicegen
Ant 任务的特性:
package examples.webservices.upgrade_pojo;
// 导入标准 JWS 批注
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.soap.SOAPBinding;
// 导入 WebLogic JWS 批注import weblogic.jws.WLHttpTransport;
/**
* 实现 HelloWorld92 Web Service 的简单 Java 类。它将
* 整数和字符串用作输入,并返回包括这两个参数
* 的消息。
*
* @作者版权所有 (c) 2005,BEA Systems。保留所有权利。
*/ @WebService(name="HelloWorld92PortType", serviceName="HelloWorld",
targetNamespace="http:
//example.org")@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)@WLHttpTransport(contextPath="upgradePOJO",
serviceUri="HelloWorld", portName="HelloWorld92Port")public
class HelloWorld92Impl {
/** * 返回包括整数和字符串输入参数的
* 文本消息。
*
*/ @WebMethod() public String sayHello(int num, String s) {
System.out.println("sayHello operation has been invoked
with arguments " + s + " and " + num);
String returnValue = "This message brought to you by the
letter "+s+" and the number "+num;
return returnValue;
}
} |
用于 Java 类实现的 Web Service 的 8.1 和已更新 9.2
Ant 生成文件的示例
下面的简单 build.xml 文件显示 8.1 使用 servicegen Ant 任务生成 WebLogic Web Service
的方式。在该示例中,已将实现 8.1 Web Service 的 Java 文件编译为 examples.javaclass.HelloWorld81
类:
<project name="javaclass-webservice"
default="all" basedir="."> <!--
设置此 build 的全局属性 --> <property name="source"
value="."/> <property name="build"
value="${source}/build"/> <property name="war_file"
value="HelloWorldWS.war" /> <property name="ear_file"
value="HelloWorldApp.ear" /> <property
name="namespace" value="http://examples.org"
/> <target name="all" depends="clean,
ear"/> <target name="clean">
<delete dir="${build}"/> </target>
<!-- 生成 Web Service 的 8.1 servicegen 调用示例--> <target
name="ear"> <servicegen destEar="${build}/${ear_file}"
warName="${war_file}"> <service javaClassComponents="examples.javaclass.HelloWorld81"
targetNamespace="${namespace}" serviceName="HelloWorld"
serviceURI="/HelloWorld" generateTypes="True"
expandMethods="True"> </service>
</servicegen> </target> </project> |
下面所示为调用 jwsc Ant 任务以生成 9.2 Web Service 的等同 build.xml
文件,本部分中讨论的相关任务以粗体显示。在该示例中,实现 9.2 Web Service 的新 JWS 文件名为 HelloWorld92Impl.java:
<project name="webservices-upgrade_pojo"
default="all"> <!-- 设置此 build 的全局属性 -->
<property name="wls.username" value="weblogic"
/> <property name="wls.password" value="weblogic"
/> <property name="wls.hostname" value="localhost"
/> <property name="wls.port" value="7001"
/> <property name="wls.server.name" value="myserver"
/> <property name="ear.deployed.name" value="upgradePOJOEar"
/> <property name="example-output" value="output"
/> <property name="ear-dir" value="${example-output}/upgradePOJOEar"
/> <taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask"
/> <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/>
<target name="all" depends="clean,build-service,deploy"
/> <target name="clean" depends="undeploy">
<delete dir="${example-output}"/> </target>
<target name="build-service"> <jwsc
srcdir="src" destdir="${ear-dir}">
<jws file="examples/webservices/upgrade_pojo/HelloWorld92Impl.java"
/> </jwsc> </target> <target
name="deploy"> <wldeploy action="deploy"
name="${ear.deployed.name}" source="${ear-dir}"
user="${wls.username}" password="${wls.password}"
verbose="true" adminurl="t3://${wls.hostname}:${wls.port}"
targets="${wls.server.name}" /> </target>
<target name="undeploy"> <wldeploy action="undeploy"
name="${ear.deployed.name}" failonerror="false"
user="${wls.username}" password="${wls.password}"
verbose="true" adminurl="t3://${wls.hostname}:${wls.port}"
targets="${wls.server.name}" /> </target>
</project> |
将 8.1 EJB 实现的 WebLogic Web Service 升级到
9.2:主要步骤
以下过程描述如何升级 8.1 EJB 实现的 Web Service 以使用 9.2 WebLogic Web Service
运行时。
9.2 Web Service 编程模型与 8.1 模型完全不同,原因在于:它隐藏 Web Service
的基本实现。不必预先指定希望由 Java 类或 EJB 实现 Web Service,jwsc Ant 任务始终选取常规 Java
类实现(除非在 JWS 文件中明确实现了 javax.ejb.SessionBean,这种情况不典型)。因此,虽然已使用 EJB
明确实现了 8.1 Web Service,但以下过程并未说明如何导入 EJB 类或使用 EJBGen。相反,该过程说明如何创建标准的
JWS 文件,该文件是 8.1 EJB 实现的 Web Service 的 9.2 等同项。
- 打开命令窗口并通过执行 setDomainEnv.cmd (Windows) 或 setDomainEnv.sh
(UNIX) 脚本(位于 9.2 域目录的 bin 子目录中)来设置 9.2 WebLogic Server 环境。
WebLogic Server 域的默认位置是 BEA_HOME/user_projects/domains/domainName,其中
BEA_HOME 是 BEA 产品的顶级安装目录,domainName 是域名。
- 创建项目目录:
prompt> mkdir /myExamples/upgrade_ejb
- 在项目目录下创建一个 src 目录以及与新的 9.2 JWS 文件(在此过程中的后面部分显示,与
8.1 EJB 实现对应)的包名对应的子目录:
prompt> cd /myExamples/upgrade_ejb prompt> mkdir src/examples/webservices/upgrade_ejb
- 将实现了 javax.ejb.SessionBean 的 8.1 EJB Bean 文件复制到工作目录的
src/examples/webservices/upgrade_ejb 目录中。根据需要将文件重命名。
注意: 不需要在 8.1 Home 和远程 EJB 文件的上面进行复制。
- 根据下列步骤所述编辑 EJB Bean 文件。请参阅8.1 EJB 文件和对应的
9.2 JWS 文件的示例中的新旧示例 Java 文件以获取特定示例。
- 如果需要,请更改 Java 文件的包名和类名以反映新的 9.2 源环境。
- 可以选择删除导入 EJB 类 (javax.ejb.*) 的 import 语句。在升级后的
JWS 文件中,不再需要这些类。
- 添加 import 语句以导入标准的 JWS 批注和 WebLogic 特定的
JWS 批注。
- 通过从类声明中删除 implements SessionBean 代码确保 JWS
文件不会再实现 javax.ejb.SessionBean。
- 删除全部 EJB 特定的方法:
- ejbActivate()
- ejbRemove()
- ejbPassivate()
- ejbCreate()
- 至少添加以下 JWS 批注:
- Java 类级的标准 @WebService 批注,用于指定使用 JWS
文件实现 Web Service。
BEA 建议还要添加下列批注
- 类级的标准 @SOAPBinding 批注,用于指定 Web Service
的类型,如 document-literal-wrapped 或 RPC-encoded。
- WebLogic 特定的类级 @WLHttpTransport 批注,用于指定在调用已部署的
Web Service 的 URL 中使用的上下文和服务 URI。
- 方法级的标准 @WebMethod 批注,针对公开为 Web Service
操作的每个方法。
有关在 Java 文件中使用 JWS 批注的常规信息,请参阅JWS 文件编程。
- 可能需要向 JWS 文件中添加其他批注,具体取决于要在 9.2 中继续使用哪些
8.1 Web Service 功能。在 8.1 中,这些功能中有许多是使用 servicegen 的特性配置的。要获得在
8.1 中使用 servicegen 特性所启用功能的等同 JWS 批注(如果有)一一列出的表,请参阅将 servicegen
特性映射到 JWS 批注或 jwsc 特性。
- 将生成 8.1 Web Service 的旧 build.xml 文件复制到 9.2 工作目录中。
- 更新 Ant build.xml 文件以将 jwsc Ant 任务与其他支持任务(而不是
servicegen)一起执行。
BEA 建议在 Ant 生成文件中创建一个新目标(如 build-service)并添加 jwsc Ant 任务调用以编译在前面的步骤中创建的新
JWS 文件。一旦该目标正常运行,便可以删除旧的 servicegen Ant 任务。
以下过程列出了用于更新 build.xml 文件的主要步骤;有关这些步骤的详细信息,请参阅WebLogic Web Service
的迭代开发中概述的标准迭代开发过程。
有关以下过程中的步骤的特定示例,请参阅用于 8.1 EJB 实现的 Web Service 的 8.1 和已更新 9.2 Ant
生成文件的示例。
- 将 jwsc taskdef 添加到 build.xml 文件中。
- 根据下列步骤所述,创建一个 build-service 目标并添加生成 9.2
Web Service 所需的任务。
- 将 jwsc 任务添加到生成文件中。将 srdir 特性设置为 src 目录(在本示例中,为
/myExamples/upgrade_ejb/src),并将 destdir 特性设置为在上一步中创建的企业应用程序根目录。
将 <jws> 子元素的 file 特性设置为在此过程中的前面部分创建的新 JWS 文件的名称。
根据要继续在 9.2 中使用的 8.1 Web Service 功能,可能需要指定 jwsc 任务的其他特性。在 8.1
中,这些功能中有许多是使用 servicegen 的特性配置的。有关指出您使用 servicegen 特性启用的功能是否存在等同的
jwsc 特性的表,请参阅将 servicegen 特性映射到 JWS 批注或 jwsc 特性。
- 执行 build-service Ant 目标。假设所有任务均成功完成,则生成的企业应用程序包含已升级的
9.2 Web Service。
有关部署和测试 Web Service 的其他信息,请参阅部署和取消部署 WebLogic Web Service 和浏览到
Web Service 的 WSDL。
根据下面部分中显示的示例 Java 代码,用于调用已升级的 9.2 Web Service 的
WSDL 的 URL 是:
http://host:port/upgradeEJB/HelloWorldService?WSDL
8.1 EJB 文件和对应的 9.2 JWS 文件的示例
假设 Bean、Home 和 Remote 类和接口(在下面三部分中显示)实现了 8.1 无状态会话 EJB,该 8.1 无状态会话
EJB 进而又实现了 8.1 Web Service。
等同的 9.2 JWS 文件显示在 等同的 9.2 JWS 文件 中。8.1 和 9.2 类之间的区别以粗体显示。请注意,有些
JWS 批注值取自用于 8.1 EJB 实现的 Web Service 的 8.1 和已更新 9.2 Ant 生成文件的示例中显示的
8.1 servicegen Ant 任务的特性:
8.1 SessionBean 类
package examples.statelessSession;
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* HelloWorldBean 是无状态会话 EJB。它有一个方法
* sayHello(),用于接收整数和字符串并返回字符串。
* <p>
* sayHello() 方法是 Web Service 基于
* 此 EJB 的公共操作。
*
* @作者版权所有 (c) 2005,BEA Systems。保留所有权利。
*/
public class HelloWorldBean81 implements SessionBean {
private static final boolean VERBOSE = true;
private SessionContext ctx;
// 您可能还会考虑使用 WebLogic 的日志服务
private void log(String s) {
if (VERBOSE) System.out.println(s);
}
/**
* 单个 EJB 业务方法。
*/
public String sayHello(int num, String s) {
System.out.println("sayHello in the HelloWorld EJB has
"+ "been invoked with arguments " + s + "
and " + num);
String returnValue = "This message brought to you by the
"+ "letter "+s+" and the number "+num;
return returnValue;
}
/**
* 此方法是 EJB 规范的必需方法,
* 但本示例中未使用。
*
*/
public void ejbActivate() {
log("ejbActivate called");
}
/**
* 此方法是 EJB 规范的必需方法,
* 但本示例中未使用。
*
*/
public void ejbRemove() {
log("ejbRemove called");
}
/**
* 此方法是 EJB 规范的必需方法,
* 但本示例中未使用。
*
*/
public void ejbPassivate() {
log("ejbPassivate called");
}
/**
* 设置会话上下文。
*
* @参数 ctx 是会话上下文
*/
public void setSessionContext(SessionContext ctx) {
log("setSessionContext called");
this.ctx = ctx; }
/**
*
此方法是 EJB 规范的必需方法,
* 但本示例中未使用。
*
*/ public void ejbCreate () throws CreateException {
log("ejbCreate called");
}
} |
8.1 远程接口
package examples.statelessSession;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
* 此接口中的方法是 HelloWorld 的公共界面。
* 这些方法的签名与 EJBean 的签名完全一样,但
* 这些方法会引发 java.rmi.RemoteException。
*
* @作者版权所有 (c) 2005,BEA Systems。保留所有权利。
*/
public interface HelloWorld81 extends EJBObject {
/**
* 仅仅让 EJB 说 hello
*
* @参数 num 返回 int 数值
* @参数 s 返回 String 字符串
* @返回 String returnValue
* @异常 RemoteException(如果存在 * 通信或系统失败)
*/
String sayHello(int num, String s) throws RemoteException;
} |
8.1 EJB Home 接口
package examples.statelessSession;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
/**
* 此接口是 HelloWorld 无状态会话 EJB 的 Home 接口。
*
* @作者版权所有 (c) 2005,BEA Systems。保留所有权利。
*/
public interface HelloWorldHome81 extends EJBHome {
/**
* 此方法对应于
* HelloWorldBean81.java 文件中的 ejbCreate 方法。
*/
HelloWorld81 create() throws CreateException, RemoteException;
} |
等同的 9.2 JWS 文件
8.1 和 9.2 文件之间的区别以粗体显示。有些 JWS 批注的值取自用于 8.1 EJB 实现的 Web Service
的 8.1 和已更新 9.2 Ant 生成文件的示例中显示的 8.1 servicegen Ant 任务的特性:
package examples.webservices.upgrade_ejb;
// 导入标准 JWS 批注
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
// 导入 WebLogic 特定批注
import weblogic.jws.WLHttpTransport;
// 类级别的批注
@WebService(name="HelloWorld92PortType", serviceName="HelloWorldService",
targetNamespace="http://example.org")@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
@WLHttpTransport(contextPath="upgradeEJB", serviceUri="HelloWorldService",
portName="HelloWorld92Port")
/**
* HelloWorld92Impl 是实现 8.1 Web Service 的
* HelloWorld81 EJB 的 JWS 对等物。它有一个方法
* sayHello(),用于接收整数和字符串并返回字符串。
* <p>
* @作者版权所有 (c) 2005,BEA Systems。保留所有权利。
*/
public class HelloWorld92Impl {
/**
sayHello 方法将变成 Web
* Service 的公共操作。
*/
@WebMethod() public String sayHello(int num, String s) {
System.out.println("sayHello in the HelloWorld92 Web Service
has "+ "been invoked with arguments " + s + "
and " + num);
String returnValue = "This message brought to you by the
"+ "letter "+s+" and the number "+num;
return returnValue;
}
} |
用于 8.1 EJB 实现的 Web Service 的 8.1 和已更新 9.2 Ant 生成文件的示例
下面的简单 build.xml 文件说明 8.1 使用 servicegen Ant 任务生成 EJB 实现的 WebLogic
Web Service 的方式。该示例后面是等同的 build.xml 文件,该文件调用 jwsc Ant 任务来生成 9.2
Web Service。
<project name="ejb-webservice"
default="all" basedir="."> <!--
设置此 build 的全局属性 --> <property name="source"
value="."/> <property name="build"
value="${source}/build"/> <property name="ejb_file"
value="HelloWorldWS.jar" /> <property name="war_file"
value="HelloWorldWS.war" /> <property name="ear_file"
value="HelloWorldApp.ear" /> <property name="namespace"
value="http://examples.org" /> <target
name="all" depends="clean,ear"/>
<target name="clean"> <delete dir="${build}"/>
</target> <!-- 生成 Web Service 的 8.1 servicegen
调用示例--> <target name="ejb"> <delete
dir="${build}" /> <mkdir dir="${build}"/>
<mkdir dir="${build}/META-INF"/> <copy
todir="${build}/META-INF"> <fileset dir="${source}">
<include name="ejb-jar.xml"/> </fileset>
</copy> <javac srcdir="${source}" includes="HelloWorld*.java"
destdir="${build}" /> <jar jarfile="${ejb_file}"
basedir="${build}" /> <wlappc source="${ejb_file}"
/> </target> <target name="ear"
depends="ejb"> <servicegen destEar="${build}/${ear_file}"
warName="${war_file}"> <service ejbJar="${ejb_file}"
targetNamespace="${namespace}" serviceName="HelloWorldService"
serviceURI="/HelloWorldService" generateTypes="True"
expandMethods="True"> </service>
</servicegen> </target> </project> |
下面所示为调用 jwsc Ant 任务以生成 9.2 Web Service 的等同 build.xml
文件,本部分中讨论的相关任务以粗体显示:
<project name="webservices-upgrade_ejb"
default="all"> <!-- 设置此 build 的全局属性 -->
<property name="wls.username" value="weblogic"
/> <property name="wls.password" value="weblogic"
/> <property name="wls.hostname" value="localhost"
/> <property name="wls.port" value="7001"
/> <property name="wls.server.name" value="myserver"
/> <property name="ear.deployed.name" value="upgradeEJB"
/> <property name="example-output" value="output"
/> <property name="ear-dir" value="${example-output}/upgradeEJB"
/> <taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask"
/> <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/>
<target name="all" depends="clean,build-service,deploy"
/> <target name="clean" depends="undeploy">
<delete dir="${example-output}"/> </target>
<target name="build-service"> <jwsc
srcdir="src" destdir="${ear-dir}">
<jws file="examples/webservices/upgrade_ejb/HelloWorld92Impl.java"
/> </jwsc> </target> <target
name="deploy"> <wldeploy action="deploy"
name="${ear.deployed.name}" source="${ear-dir}"
user="${wls.username}"
password="${wls.password}" verbose="true"
adminurl="t3:
//${wls.hostname}:
${wls.port}" targets="${wls.server.name}" />
</target> <target name="undeploy">
<wldeploy action="undeploy" name="${ear.deployed.name}"
failonerror="false" user="${wls.username}"
password="${wls.password}"
verbose="true" adminurl="t3:
//${wls.hostname}:
${wls.port}" targets="${wls.server.name}" />
</target> </project> |
将 servicegen 特性映射到 JWS 批注或 jwsc 特性
下表将 8.1 servicegen Ant 任务的特性映射到它们等同的 9.2 JWS 批注或 jwsc 特性。
第一列中列出的特性是主要 servicegen Ant 任务的特性与 servicegen 的四个子元素 (<service>、<client>、<handlerChain>
和 <security>)的特性的混合
有关 9.2 JWS 批注和 jwsc Ant 任务的详细信息,请参阅JWS 批注参考和jwsc。
表 13-1 将 servicegen 特性映射到 JWS 批注或 jwsc 特性
servicegen 或 servicegen
特性的子元素 |
等同的 JWS 批注或 jwsc 特性 |
contextURI |
WebLogic 特定的 @WLHttpTransport 批注的 contextPath
特性。 |
destEAR |
jwsc Ant 任务的 destdir 特性。 |
keepGenerated |
jwsc Ant 任务的 keepGenerated 特性。 |
mergeWithExistingWS |
无等同项。 |
overwrite |
无等同项。 |
warName |
jwsc Ant 任务的 <jws> 子元素的 name 特性。 |
ejbJAR
(service 子元素的特性) |
无直接等同项,原因是:jwsc Ant 任务从 JWS 文件而不是已编译的 EJB
或 Java 类生成 Web Service 工件。
间接等同项是指定 JWS 文件的名称的 jwsc Ant 任务的 <jws> 子元素的 file 特性。 |
excludeEJBs
(service 子元素的特性) |
无等同项。 |
expandMethods
(service 子元素的特性) |
无等同项。 |
generateTypes
(service 子元素的特性) |
无等同项。 |
generateTypes
(service 子元素的特性) |
无等同项。 |
ignoreAuthHeader
(service 子元素的特性) |
无等同项。 |
includeEJBs
(service 子元素的特性) |
无直接等同项,原因是:jwsc Ant 任务从 JWS 文件而不是已编译的 EJB
或 Java 类生成 Web Service 工件。
间接等同项是指定 JWS 文件的名称的 jwsc Ant 任务的 <jws> 子元素的 file 特性。 |
javaClassComponents
(service 子元素的特性) |
无等同项,原因是:JMS 实现的 Web Service 在 9.2 版中不受支持。
|
JMSConnectionFactory
(service 子元素的特性) |
无等同项,原因是:JMS 实现的 Web Service 在 9.2 版中不受支持。
|
JMSDestination
(service 子元素的特性) |
无等同项,原因是:JMS 实现的 Web Service 在 9.2 版中不受支持。
|
JMSDestinationType
(service 子元素的特性) |
无等同项,原因是:JMS 实现的 Web Service 在 9.2 版中不受支持。
|
JMSMessageType
(service 子元素的特性) |
无等同项,原因是:JMS 实现的 Web Service 在 9.2 版中不受支持。 |
JMSOperationName
(service 子元素的特性) |
无等同项,原因是:JMS 实现的 Web Service 在 9.2 版中不受支持。
|
protocol
(service 子元素的特性) |
以下 WebLogic 特定的批注之一:
- @WLHttpTransport
- @WLJmsTransport
|
serviceName
(service 子元素的特性) |
标准 @WebService 批注的 serviceName 特性。 |
serviceURI
(service 子元素的特性) |
WebLogic 特定的 @WLHttpTransport 或 @WLJmsTransport
批注的 serviceUri 特性。 |
style
(service 子元素的特性) |
标准 @SOAPBinding 批注的 style 特性。 |
typeMappingFile
(service 子元素的特性) |
无等同项。 |
targetNamespace
(service 子元素的特性) |
标准 @WebService 批注的 targetNamespace 特性。 |
userSOAP12
(service 子元素的特性) |
WebLogic 特定的 @weblogic.jws.Binding JWS 批注的
value 特性。 |
clientJarName
(client 子元素的特性) |
无等同项。 |
packageName
(client 子元素的特性) |
无直接等同项。
使用 clientgen Ant 任务的 packageName 特性可生成客户端 Java 代码和工件。 |
saveWSDL
(client 子元素的特性) |
无等同项。 |
userServerTypes
(client 子元素的特性) |
无等同项。 |
handlers
(handlerChain 子元素的特性) |
标准 @HandlerChain 或 @SOAPMessageHandlers 批注。 |
name
(handlerChain 子元素的特性) |
标准 @HandlerChain 或 @SOAPMessageHandlers 批注。 |
duplicateElimination
(reliability 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含 Web Service 可靠消息传递策略声明的 WS-Policy
文件。
请参阅使用 Web Service 可靠消息传递。 |
persistDuration
(reliability 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含 Web Service 可靠消息传递策略声明的 WS-Policy
文件。
请参阅使用 Web Service 可靠消息传递。 |
enablePasswordAuth
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
encryptKeyName
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
encryptKeyPass
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
password
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
signKeyName
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
signKeyPass
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
username
(security 子元素的特性) |
无直接等同项。
使用 WebLogic 特定的 @Policy 特性可指定包含消息级别安全策略声明的 WS-Policy 文件。
请参阅配置消息级安全(数字签名和加密)。 |
|