引言 图 1.在 HTTP 和 JMS 上使用 SOAP 访问 EJB Web 服务
首先,下载 HelloWorldApp.zip
,将其解压缩,得到 HelloWorld.ear
,然后单击右侧的步骤 1,开始以下六个步骤。
如果想绕过创建和修改 Web 服务这一步,可以下载HelloWorldApp.zip
(如果您还没有下载的话)并解压缩得到 HelloWorldSolution.ear
。然后按照下面的步骤来测试这个方案:
- 将
HelloWorldSolution.ear
文件导入到 Application Developer V5.1.1 工作区。- 选择 File => Import。
- 选择 EAR File 然后单击 Next。
- 在 Enterprise Application Import 窗口,定位到保存 EAR 文件的位置。
- 选择 HelloWorldSolution.ear,然后单击 Open。
- 设置 Project Name 为 HelloWorld。
- 单击 Finish。
- 将
webservices.jar
文件添加到 HelloWorldWebRouter 的构建路径中。- 在 J2EE Perspective's Project Navigator 视图下,右键单击 HelloWorldWebRouter 模块,选择 Properties。
- 在左侧栏中选择 Java Build Path。
- 在左侧栏中选择 Libraries 选项卡。
- 单击 Add Variable。
- 向下滚动,选择 WAS_50_PLUGINDIR 变量然后单击 Extend...。
- 选择 file lib => webservices.jar 然后单击 OK。
- 单击 OK。
- 将
webservices.jar
文件添加到 HelloWorldJMSRouter 的构建路径中。- 在 J2EE Perspective's Project Navigator 视图下,右键单击 HelloWorldWebRouter 模块,选择 Properties。
- 在左侧栏中选择 Java Build Path。
- 在左侧栏中选择 Libraries 选项卡。
- 单击 Add Variable。
- 向下滚动,选择 WAS_50_PLUGINDIR 变量然后单击 Extend...。
- 选择 file lib => webservices.jar 然后单击 OK。
- 单击 OK。
- 为通过 JMS 传输 SOAP 配置服务器(参阅步骤 2.为通过 JMS 传输 SOAP 配置 WebSphere Application Server 测试环境)。
- 测试 Web 服务(参阅步骤 6.为两种传输方法测试 Web 服务客户机)。
步骤 1.导入 HelloWorld 企业应用程序
HelloWorld Enterprise Application Archive(EAR)这个文件包含一个 EJB 模块——HelloWorldEJB。这个模块里有一个无状态会话 bean——HelloWordSSB。该 bean 有一个 getMessage() 方法,调用这个方法时会返回一个字符串“Hello World”。下载 HelloWorld.ear
按照下面步骤将 EAR 文件导入到 Application Developer 工作区。
- 将
HelloWorld.ear
文件导入到 Application Developer 工作区。- 选择 File => Import。
- 选择 EAR File,然后单击 Next。
- 在 Enterprise Application Import 窗口,定位到保存 EAR 文件的位置,然后选择
HelloWorld.ear
文件。 - 设置 Project Name 为 HelloWorld(缺省值)。
- 单击 Finish。
步骤 2.为通过 JMS 传输 SOAP 配置 WebSphere Application Server 测试环境
要为 Web 服务实现提供 SOAP/JMS 支持,必须创建所需的 JMS 资源(队列(Queue)、队列连接工厂(Queue Connection Factories)和侦听器端口(Listener Ports))来处理和响应传入的消息。下面的步骤介绍了如何为实现 HelloWorld Web 服务配置所需的 JMS 资源。
- 创建新的 Server Configuration。
- 选择 File => New => Other。
- 在左侧栏中单击 Server。
- 在左侧栏中单击 Server 和 Server Configuration。
- 单击 Next。
- 在 Create a new server and server configuration 的窗口中:
- 设置 Server Name 为“TestServer”。
- 设置 Server Type 为 WebSphere version 5.1 => Test Environment (缺省选项)。
- 单击 Finish。
创建操作所得的新服务器配置和服务器配置条目如图 2 所示。
- 打开 Server Perspective 和 TestServer settings 窗口。
- 选择 Window => Open Perspective => Other。
- 选择 Server 然后单击 OK。
- 在 Server Perspective's Server Configuration 视图(在屏幕的左下方)中,展开 Servers 并双击 TestServer。
- 在 Server Settings 窗口中,选择 JMS 选项卡以打开 WebSphere JMS Provider Options。
- 创建一个队列:
- 在 Server Settings => JMS Server Properties 下单击 Add。
- 在弹出的 Add Queue Name 窗口中,设置 Name 为“HWInboundQ”。
- 单击 OK。
- 在 Server Settings => JMS Server Properties => JMS Provider 下选中 MQ Simulator for Java Developers 单选框。
- 为入站队列创建一个队列连接工厂(QCF)。
- 在 Server Settings => JMS Connection Factories => WASQueueConnection Factory 条目下单击 Add。
- 在弹出的 Add WASQueueConnectionFactory 窗口中:
- 设置 Name 为“HWInboundQCF”。
- 设置 JNDI name 为“jms/HWQCF”。
- 单击 OK。
添加操作所得的 WASQueueConnectionFactory 条目如图 3 所示。
- 为出站队列创建一个出站 QCF。(为通过 JMS 传输 SOAP 发送一个响应消息,这个条目是必需的而且一定要如下所示。)
- 在 Server Settings => JMS Server Properties => WASQueueConnection Factory 条目下单击 Add。
- 在弹出的 Add WASQueueConnectionFactory 窗口中:
- 设置 Name 为“WebServicesReplyQCF”。
- 设置 JNDI name 为“jms/WebServicesReplyQCF”。
- 单击 OK。
添加操作所得的 WASQueueConnectionFactory 条目如图 4 所示。
- 为传入消息创建一个 JMS Destination。
- 在 Server Settings => JMS Destinations => WASQueue 条目下单击 Add。
- 在弹出 Add WASQueue 的窗口中:
- 设置 Name 为“HWInboundQ”。
- 设置 JNDI name 为“jms/HWQ”。
- 单击 OK。
添加操作所得的 WASQueue 条目如图 5 所示。
- 在 Server Settings 窗口中,选择 EJB 选项卡查看其他 EJB 容器设置中的侦听器端口。
- 添加一个 JMS 侦听器端口。
- 在 Server Settings => Listener Ports 下,单击 Add。
- 在弹出的 Add Listener Port 窗口中:
- 设置 Name 为“HWPort”。
- 向下滚动选择 jms/HWQCF 作为连接工厂的 JNDI 名称。
- 向下滚动选择 jms/HWQ 作为目的地的 JNDI 名称。
- 单击 OK。
添加操作所得的侦听器端口条目如图 6 所示。
- 在 Server Configuration 窗口中,选择 Environment 选项卡查看 Environment Options。
- 将
urlprotocols.jar
文件添加到服务器的类路径中。- 在 Class Path 下单击 Add External Jars。
- 定位到
<WSAD_INSTALLDIR>/runtimes/base_v51/lib
目录。 - 选择文件
urlprotocols.jar
。 - 单击 Open。
要点:对于 SOAP/JMS,在 WebSphere Application Server V5.1 测试服务器的类路径中必须包括
urlprotocols.jar
文件。这个文件包含测试应用程序必需的 JMS 协议处理类。
- 保存对 Server Configuration 的修改然后关闭编辑器。
- 选择 File => Save。
- 如果有提示,单击 Yes 合并对服务器配置的修改。
- 关闭编辑器。
我们已经为 SOAP/JMS 成功配置了 WebSphere Application Server V5.1 测试环境。
步骤 3.为通过 JMS 传输 SOAP 创建一个无状态会话 EJB Web 服务
在这一步里,我们使用 Application Developer 创建一个新的 EJB 模块来将 SOAP/JMS 路由到无状态会话 bean Web 服务的实现。然后使用工具创建 Web 服务实现本身。在步骤 4 中将为 SOAP/JMS 和 HTTP/JMS 修改 Web 服务实现。
Application Developer 在 EJB 模块中创建消息驱动 Bean(MDB)。这个 EJB 模块独立于无状态会话 bean Web 服务实现模块。如果有必要,这个 MDB 会通过队列来处理传入消息、调用 Web 服务并发送响应消息。MDB 的创建是在 Application Developer 创建 Web 服务实现的过程中隐式地进行。但是,包含结果 MDB 的 EJB 模块必须在为 SOAP/JMS 创建 Web 服务实现之前创建。
根据本教程的目的,我们将创建一个新的 EJB 模块——HelloWorldJMSRouter,它将 SOAP/JMS 请求路由到 HelloWordSSB Web 服务实现。
- 在工作区中打开 J2EE Perspective。
- 创建 JMS Router Module。
- 在 Project Navigator 视图中,右键单击 HelloWorld Enterprise Application。
- 选择 New => Other。
- 在新弹出窗口的左侧栏中单击 EJB。
- 在新弹出窗口的右侧栏中单击 EJB Project。
- 单击 Next。
- 选择 Create 2.0 EJB Project bullet (缺省地被选中)。
- 单击 Next。
- 输入“HelloWorldJMSRouter”作为 Project name。
- 单击 Finish。
- 如果有提示,单击 OK 修改服务器配置并向 Server Configuration 中添加 Router Module。
- 为 HelloWorld 无状态会话 Bean 创建 EJB Web 服务。
- 在 Project Navigator 视图中。
- 右键单击 HelloWorldEJB EJB 模块。
- 选择 New => Other。
- 在新弹出窗口的左侧栏中单击 Web services。
- 在新的弹出窗口右侧栏格中单击 Web service。
- 单击 Next。
所得的新 XML Web 服务选项如图 7 所示。
- 在 Web services 窗口中:
- 向下滚动选择 EJB Web service 作为 Web service type。
- 在 Web project 中取消 Start Web service。
- 单击 Next。
所得的 Web 服务条目如图 8 所示。
- 在 Service Deployment Configuration 窗口中:
- 检查 Server 是否被设置为 TestServer,如果还没有,选择 Edit。
- 选择 Existing Servers => Test Server。
- 单击 OK。
- 向下滚动 Router Project 然后选择“HelloWorldJMSRouter”。
- 单击 Next。
要点:如果使用的是 Application Developer V5.1 (为 WAS 5.0.2 开发的),它会在同一个 EJB 模块中创建一个 MDB 作为无状态会话 bean Web 服务实现。因此,不需要创建新的 EJB Project ,Router Project 会被设置为 HelloWordEJB。在 Application Developer V5.1 中启用 SOAP/JMS 选项和创建 MDB 时必须这样做,这个 MDB 可以通过 HelloWorldEJB Module 的队列来处理传入消息。
所得的服务部署配置条目如图 9 所示。
Figure 9. Service deployment configuration - EJB Web service图 9.服务部署配置 - EJB Web 服务
- 在 Web service EJB Selection 窗口中:
- 单击 Browse EJB beans。
- 选择无状态 EJB Bean
HelloWorldSSB
。 - 单击 OK。
- 输入 JMS URI Properties,该属性被用作 JMS 服务端点 URL。这些属性的大部分会自动填充。
- 选择 Soap over JMS。
- 设置队列的 JMS 目的地。
- 向下滚动选择 jms/HWQ 作为目标队列或主题 JNDI 名称(缺省选中)。
- 向下滚动选择 jms/HWQCF 作为 JMS Connection factor (缺省选中)。
- 设置请求即将分派到的端口组件 Name 为“HWSSBPortComponent”。
- 向下滚动选择 HWPort 作为消息驱动 Bean 的侦听器输入端口的名称(缺省选中)。
- 单击 Next。
所得的 Web 服务 EJB 选项条目如图 10 所示。
- 在 Web service Java Bean Identity 上:
- 单击 Next 接受缺省设置。
- 在为 WS-I compliance 弹出的 Web 服务警告窗口中单击 Details 以浏览关于启用 JMS 的警告。
- 单击 Ignore。(该警告是必然出现的。)
- 单击 Finish。
步骤 4.a.修改 Web 服务部署描述符来为 Web 路由器模块创建端口组件和绑定
在这一步,将为 SOAP/HTTP 传输访问 HelloWorld Web 服务实现创建一个新的端口组件和绑定配置
- 在 J2EE Perspective Project Navigator 视图 中:
- 展开 HelloWorldEJB => ejbmodule => META-INF。
- 双击 webservices.xml 打开 Web services Editor。
- 为便于浏览,双击 Web services Editor 选项卡使编辑器最大化。
- 在 Web services Editor 窗口中,选择 Port Components 选项卡,查看 Port Component 的设置。在 Port Components 下,单击 Add 创建一个新的缺省的“Port component”。
- 高亮显示新创建的端口组件。
- 如果必要的话,向下滚动右侧栏到 Port Component implementation details。
- 设置 Port Component Name 为“HelloWorld”。
- 对 WSDL Port 条目:
- 设置 Namespace URI 为“http://ejb.webservices.test.ibm.com”。
- 设置 Local part 为“HelloWorld”。
- 设置 Service endpoint interface 为
com.ibm.test.webservices.ejb.HelloWorldSSB
。 - 选中 EJB Link 单选框。
- 向下滚动然后选择 HelloWorldSSB 作为 Service Implementation bean (缺省选中)。
所得的端口组件条目如图 11 所示:
- 在 Web services Editor 中,选择 Bindings 选项卡以浏览 Web 服务绑定。
- 在 Web service Description Bindings 部分高亮显示 HelloWorldSSBService。
- 如果有必要,在右侧栏向下滚动到 Port Component Binding。
- 单击 Add。
- 在 Port Component binding 对话框窗口中:
- 向下滚动选择 HelloWorld 作为 PC Name Link。
- 向下滚动并设置 Session 为 Scope。
- 单击 OK。
所得的端口组件绑定对话框条目如图 12 所示:
- 保存所作的修改并关闭 Web services Editor。
- 选择 File => Save。
- 关闭 Editor。
- 修改
ibm-webservices-bnd.xmi
文件中缺省的 pcBindings 配置信息。在 J2EE Perspective Project Navigator 视图中:- 展开 HelloWorldEJB => ejbmodule => META-INF。
- 双击 ibm-webservices-bnd.xmi 来打开 XML Editor。
- 选择 Source 选项卡。
- 删除安全绑定元素。
原来的 pcBindings 条目:
<pcBindings xmi:id="PCBinding_1068756918823" pcNameLink="HelloWorld" wsdlServiceQnameNamespaceLink="" wsdlServiceQnameLocalnameLink="" scope="Session"> <securityRequestReceiverBindingConfig xmi:id="SecurityRequestReceiverBindingConfig_1068756918823"/> <securityResponseSenderBindingConfig xmi:id="SecurityResponseSenderBindingConfig_1068756918823"/> </pcBindings>
修改后的 pcBindings 条目:
<pcBindings xmi:id="PCBinding_1068756918823" pcNameLink="HelloWorld" wsdlServiceQnameNamespaceLink="" wsdlServiceQnameLocalnameLink="" scope="Session"> *** 这里删除了以下元素 *** </pcBindings>
- 保存修改并关闭 XML Editor。
- 选择 File => Save。
- 关闭 Editor。
这些是 Web 服务部署描述符所需的全部修改。
步骤 4.b.使用必要的端口和绑定配置修改 Web Services Description Language(WSDL)文件
在这一步,将使用所需的端口和绑定定义来修改 HelloWorldSSB.wsdl
文件,以利于 SOAP/HTTP 对 HelloWorld Web 服务实现的请求。
- 在 J2EE Perspective Project Navigator 视图中:
- 展开 HelloWorldEJB => ejbmodule => META-INF => wsdl。
- 双击 HelloWorldSSB.wsdl 打开 WSDL Editor。
- 为便于浏览,双击 HelloWorldSSB.wsdl 选项卡使编辑器最大化。
- 选择 Graph 选项卡查看 Graphical WSDL 表示。
- 在 Services Section 中:
- 右键单击 HelloWorldSSBService service definition
- 选择 Add Child => port。
- 在新弹出的 New Port 窗口中,设置 Name 为“HelloWorld”。
- 单击 OK。
- 在 Services Section 中:
- 右键单击 HelloWorld port definition。
- 选择 Set Binding。
- 选择 Create a new binding bullet。
- 在弹出的 Specify Binding 窗口中,设置绑定 Name 为“HelloWorldSoapBinding”。
- 单击 Finish。
所得的指定绑定条目如图 13 所示。
- 在左下侧框的 Port Definition 中,向下滚动,为 HelloWorld port 设置 intf:HelloWorldSoapBinding 作为 Binding。
- 在 Services Section 中:
- 右键单击 HelloWorld port definition。
- 单击 Set PortType。
- 选择 Select an existing Port Type bullet。
- 选择 intf:HelloWorldSSB Port Type。
- 单击 Finish。
所得的指定端口类型条目如图 14 所示。
- 在 Services Section 中:
- 右键单击 HelloWorld port definition。
- 选择 Add Extensibility Element => wsdlsoap:address。
- 在 Services Section 中:
- 展开 HelloWorld port definition。
- 选择前面创建的 wsdlsoap:address
- 在左下侧框的 wsdlsoap:address 段中:
- 单击 Value field 中的第一条“http://www.ibm.com”进行编辑。
- 将值设置为“http://localhost:9080/HelloWorldWebRouter/services/HelloWorld”。
- 在 Web services Editor 中,选择 Source 选项卡,查看 Source Editor。
- 从 HWSSBPortComponentSoapBinding 将 wsdlsoap:binding 和 wsdl:operation 的信息复制到 HelloWorldSoapBinding,如下所示:
<wsdl:binding name="HWSSBPortComponentSoapBinding" type="intf:HelloWorldSSB"> ***从这里开始复制元素**** </wsdl:binding> <wsdl:binding name="HelloWorldSoapBinding" type="intf:HelloWorldSSB"> ***将复制的元素粘贴到这里*** </wsdl:binding>
- 将 HelloWorldSoapBinding 中 wsdlsoap:binding 元素的传输元素由 JMS 更改为 HTTP,如下所示:
<wsdl:binding name="HelloWorldSoapBinding" type="intf:HelloWorldSSB"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/jms"/> ... </wsdl:binding>
- 保存对 HelloWorldSSB.wsdl 所作的修改并关闭 WSDL Editor。
- 选择 File => Save。
- 关闭 Editor。
以上这些是对 SOAP/JMS 和 SOAP/HTTP 请求 HelloWorld Web 服务实现所需的 HelloWorldSSB.wsdl
文件所做的全部修改。
步骤 4.c.在 HTTP 路由器模块上创建 SOAP
在这一步里,创建附加的 Web 路由器模块来处理对 HelloWorld Web 服务实现的传入 HTTP 请求。
- 在 J2EE Perspective Project Navigator 视图中:
- 右键单击 HelloWorldEJB 项目。
- 选择 Web services => Endpoint Enabler。
- 在 Select Transports 下,HTTP 缺省地被选中。
- 设置 HTTP 路由器模块的名称为“HelloWorldWebRouter”。
- 将与 HTTP 路由器模块相关联的上下文根设置为“HelloWorldWebRouter”。
- 单击 OK。该操作可能需要花费几分钟的时间。
- 如果提示是否保存对 Server Configuration 所作的修改,单击 OK。
所得的端点启用程序配置条目如图 15 所示。
HelloWorldWebRouter Web 模块创建完成,开始处理 SOAP/HTTP 请求。
还可以选择使用 endptEnabler 命令行工具来创建 HelloWorldWebRouter 模块。 WebSphere Application Server 5.1 为开发 Web 服务实现提供了一个如同 Web 服务客户机的命令行工具—— endptEnabler。endptEnabler 命令行工具提供一个便利的向支持 Web 服务的应用程序( EAR 文件 )添加一个或多个路由模块的方法。每一个路由模块都被创建并支持 JMS 或 HTTP 的 服务端点。例如,要创建如上所述的相同的 HTTP 端点,可以使用如下的命令行:
|
本教程的属性文件包含以下条目:
|
本教程并没有详细描述 endptEnabler 命令行工具。要获取有关endptEnabler 和 命令行选项的详细信息,请参阅 WebSphere Application Server Info Center。endptEnabler 应该在支持 Web 服务的应用程序部署之前就运行于 WebSphere Application Server 5.1。
步骤 5.从相应的 WSDL 生成 Web 服务客户机
在这一步,将创建 Test Client 来测试我们的 Web 服务。
- 在 J2EE Perspective Project Navigator 中:
- 右键单击 HelloWorld 项目。
- 选择 New => Other。
- 在新弹出窗口的左侧栏中,单击 Web services。
- 在新弹出窗口的右侧栏中,单击 Web service Client。
- 单击 Next。
- 在 Web services 窗口中:
- 选择 Java Proxy 作为 Client proxy type(缺省选中)。
- 选择 Test Generated Proxy。
- 单击 Next。
所得的 Web 服务客户机选择结果如图 16 所示:
- 在 Client Environment Configuration 窗口中:
- 选择 Use Defaults bullet(缺省选中)。
- 设置或输入“HelloWorldWebJMSClient”作为 Client Web Project。
- 单击 Next。
所得的 Web 服务客户机条目如图 17 所示:
- 在 Web service Selection Page 窗口中:
- 选择 Browse 来定位
HelloWorldSSB.wsdl
文件。 - 选择 HelloWorldEJB => ejbmodule => META-INF => wsdl => HelloWorldSSB.wsdl。
- 单击 OK。
- 单击 Next。
- 选择 Browse 来定位
- 在 Web service Proxy Page 中:
- 选择 Generate Proxy (缺省选中)。
- 单击 Next。
- 在 Web service Client Test 窗口中:
- 选择 Test the generated proxy(缺省选中)。
- 取消选中的“getHelloWorldSSB”和“useJNDI”方法(缺省选中)。
- 取消选中的“Run test on Server”(缺省选中)。
- 单击 Finish。
所得的 Web 服务客户机测试条目如图 18 所示。
我们已经成功的生成了一个 Web 服务测试客户机,使用 SOAP/JMS 和 SOAP/HTTP 这两种传输机制来调用 HelloWorld Web 服务实现。
- 在 J2EE Perspective Project Navigator中:
- 展开 HelloWorldWebJMSClient=>WebContent => sample => HelloWorldSSBProxy。
- 右键单击 TestClient.jsp。
- 选择 Run on Server。
- 选择 Use an existing Server bullet(缺省地被选中)。
- 从前面配置好的服务器列表中选择 TestServer(缺省选中)。
- 单击 Finish。将启动 TestServer,打开 Web Browser 并调用
http://localhost:9080/HelloWorldWebJMSClient/sample/HelloWorldSSBProxy/TestClient.jsp
。所得的服务器选择条目如图 19 所示。
- 双击 Web Browser 选项卡。最大化 Web Browser 以便于浏览。
- 在 Web Browser 中:
- 在 Methods 框中单击getEndpoint。
- 在 Inputs 框中单击 Invoke。
调用 getEndPoint 操作所得结果如图 20 所示。
图 20.Web 服务测试客户机 getEndpoint 调用
Result 框中包含着 JMS 端点 URL 字符串。
- 在 Web Browser 中:
- 在 Methods 框中单击 getMessage。
- 在 Inputs 框中单击 Invoke。
在 Result 框中显示“Hello World”信息。图 21 显示了调用测试客户机 getMessage 操作所得的结果。
接下来,测试在 HTTP 上使用 SOAP 的 Web 服务。
- 在 Web Browser 的 Methods 框中,单击 setEndpoint(String)。
- 要在 HTTP 上使用 SOAP 调用 Web 服务,请在 Inputs 框的端点方框中输入
http://localhost:9080/HelloWorldWebRouter/services/HelloWorld"
。 - 在 Web Browser 中,单击 Invoke。
注意:要在 JMS 上使用 SOAP 调用 Web 服务,URL 应该设置为
jms:/queue?destination=jms/HWQ&connectionFactory=jms/HWQCF&targetService=HWSSBPortComponent"
。 - 在 Web Browser 中:
- 在 Methods 框中单击 getEndpoint。
- 在 Inputs 框中单击 Invoke。
- 在 Result 框中包含 HTTP 端点的 URL。
- 在 Web Browser 中:
- 在 Methods 框中单击 getMessage。
- 在 Inputs 框中单击 Invoke。
- 在 Result 框中显示“Hello World”信息。
我们已经成功的测试了 Web 服务实现和使用 SOAP/JMS 和 SOAP/HTTP 传输机制来调用 Web 服务的功能。
故障诊断提示和技巧
问题:
测试应用程序和初始化 TestClient.jsp 时,会发生如下的异常:
|
解答:
没有把 urlprotocols.jar
文件添加到服务器类路径。参见步骤 2.为通过 JMS 传输 SOAP 配置服务器的步骤 11。
问题:
生成 Web 服务时,弹出一个窗口显示如下信息:“IWAB044E unable to get URL for project P/HelloWorldEJB”。
解答:
取消操作,关闭所有打开的编辑器和 Server Configuration 窗口。重新生成 Web 服务。如果问题依然存在,则工作区可能处于不一致状态。请尝试重新启动 Application Developer V5.1.1。
问题:
启动 HelloWorldEJB.jar
文件时,EJB 模块启动失败或是在控制台上纪录如下错误信息:
|
|
ibm-webservices-bnd.xmi
文件包含一个无效范围或为端口组件 配置的缺省设置—— portComponentName=HelloWorld。检查 HelloWorldEJB => ejbmodule => META-INF => ibm-webservices-bnd.xmi 文件中的如下条目:
|
解答:
删除安全绑定元素并用下面修改过的条目替换上面的相应条目。参阅步骤 4.a.修改 Web 服务的部署描述符来为 Web 路由模块创建端口组件和绑定中的步骤 7。
|
问题:
为 JMS URL 设置端点时, setEndpoint 函数将 URL 修改为无效的 JMS URL。调用 getMessage 操作时,引发如下错误:
|
例如,设置 endPointURL 为:
|
端点被错误的设置为:
|
在生成的客户机代码里,检查 Result.jsp
文件中的 markup 方法,该方法是否修改了传递到 setEndpoint(String) 的字符串并且将字符串中出现的 '&'
全部替换为"&"
,如下面的代码段所示:
|
解答:
修改客户机代码,以使 JMS URL 设置正确并且当将端点设置到 JMS URL 时不会发生错误。可以修改代码,将 buffer.append("&");
替换为 buffer.append('&');
,或者删除 case '&':
子句,还可以注释掉相关的代码,如下所示:
|
修改代码后,就可以通过改变端点来实现在 JMS 和 HTTP 端点 URL 之间的替换。
结束语
本教程演示了如何使用 Application Developer V5.1.1 和 WebSphere Application Server 5.1 Test Environment 来开发和测试一个名为 HelloWorld 的服务实现,该服务通过 SOAP/JMS 和 SOAP/HTTP 传输无状态 Bean。Application Developer 缩短了通过 JMS 和 HTTP 传输机制实现对 SOAP 的支持所需的时间。
- Web services for J2EE, V1.0 [JSR-109]
- Java API for XML-Based RPC (JAX-RPC) [JSR-101]
- 使用 WebSphere V5 工具和技术开发和部署 Web 服务——第 1 部分:创建和测试 Web 服务
- 在 WebSphere Studio Application Developer V5.1 中为 J2EE Web 服务提供支持——第 1 部分:服务器环境
- IBM 红皮书:WebSphere V5.1 Application Developer V5.1.1 Web 服务手册
- WebSphere Application Server 信息中心
关于作者 Tendai Chinoda 是 IBM Business Partner Technical Support WebSphere Competency Center 的软件工程师。为 IBM WebSphere 家族产品的首要商业伙伴(Business Partners) 提供开发者到开发者(developer-to-developer) 的技术支持和启动服务。Tendai 通过了 Application Developer V5.1 的 IBM Certified Solution Developer- Web Services Development、 WebSphere Application Server AE V4 的 IBM Certified Systems Expert- Administration 、IBM Certified System Administrator-WebSphere Application Server V 以及 Sun Certified Programmer-Java 2 Platform 等认证。他的专长和兴趣包括 WebSphere Application Server V4 and V5 系统管理和体系结构、 WebSphere Studio Application Developer V5 J2EE、 Web 服务开发、WSDL、SOAP、JMS、JCA和JDBC等。可以通过 tendai@us.ibm.com 与 Tendai 联系。 |
到页首 | |
描述 | 文件类型 | 文件大小 | 下载方式 |
HelloWorldApp.zip | zip | 126 KB | HTTP |
文章来源于领测软件测试网 https://www.ltesting.net/
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073