示例:为 Web Service 部署描述符配置处理程序类
本方案说明如何将客户机和服务器处理程序类添加到样本应用程序 WebServicesSamples.ear。当给定要处理的请求或响应时,处理程序类显示一些消息。
客户机处理程序类的代码在以下示例中有所说明:
package samples;
public class ClientHandler implements javax.xml.rpc.handler.Handler {
public ClientHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) {}
public void destroy() {}
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
服务器处理程序类的代码在以下示例中有所说明:
package sample;
public class ServerHandler implements javax.xml.rpc.handler.Handler {
public ServerHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) {}
public void destroy() {}
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
- 使用以下命令编译这些类:
%JAVA_HOME%\bin\java -extdirs %WAS_EXT_DIRS% ClientHandler.java ServerHandler.java
$JAVA_HOME/bin/java -extdirs $WAS_EXT_DIRS ClientHandler.java ServerHandler.java
- 打开组装工具并导入这两个样本企业归档 (EAR) 文件:
...\installableApps\WebServicesSamples.ear
.../installableApps/WebServicesSamples.ear
...\installableApps\ApplicationClients.ear
.../installableApps/ApplicationClients.ear
- 将编译的处理程序类导入样本模块的项目中:
- 将 sample.ClientHandler 导入 AddressBookClient 项目的 appClientModule 目录中。
- 将 sample.ServerHandler 导入 AddressBookW2JE 项目的 ejbModule 目录中。
- 为处理程序类配置客户机部署描述符。
本主题说明如何为用户提供的处理程序类配置客户机部署描述符。
- 为处理程序类配置 webservices.xml 部署描述符。
本主题说明如何为用户提供的处理程序类配置 webservices.xml 部署描述符。
- 保存您的更改并导出 EAR 文件。
- 如果 WebServicesSamples.ear 应用程序已经安装,从您的服务器卸载。
- 安装新的 WebServicesSamples.ear 应用程序。
- 启动服务器。
- 运行客户机:
launchClient ApplicationClients.ear -CCjar=AddressBookClient.jar
当客户机运行时,控制台输出看上去与以下示例相似。来自处理程序的消息以粗体显示。
IBM WebSphere Application Server J2EE Application Client Tool Copyright IBM Corp., 1997-2003 WSCL0012I: Processing command line arguments. WSCL0013I: Initializing the J2EE Application Client Environment. WSCL0035I: Initialization of the J2EE Application Client Environment has completed. WSCL0014I: Invoking the Application Client class com.ibm.websphere.samples.webservices.addr.AddressBookClient >> Querying address for 'Purdue Boilermaker' using port AddressBookW2JE ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 1 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookJ2WE ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 2 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookJ2WB ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 3 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookW2JB ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 4 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900
对于客户机,处理程序类是为每个服务引用而不是为每个端口配置的。AddressBook 样本有四个端口,但只有一个服务引用,因此 ClientHandler 在所有端口上处理请求和响应。
当检查服务器日志文件时,它包含以下数据:
[9/24/03 16:39:22:661 CDT] 4deec1c6 WebGroup I SRVE0180I:
[HTTP router for AddressBookW2JE.jar] [/AddressBookW2JE] [Servlet.LOG]:
AddressBook: init
[9/24/03 16:39:23:161 CDT] 4deec1c6 SystemOut O ServerHandler: In handleRequest
[9/24/03 16:39:23:211 CDT] 4deec1c6 SystemOut O ServerHandler: In handleResponse
结果
已为处理程序类配置部署描述符。部署描述符是必需的,以便 WebSphere® Application Server 可处理入局 Web Service 请求。
下一步做什么?
部署已配置并为 Web Service 启用的 EAR 文件。接着您可测试此应用程序以确保它在 WebSphere Application Server 环境中运行。