利用 SOAP 头保持 EJB 状态:处理 VB.6 和 VB.NET SOAP 客户端中的状态
2010-03-23 00:00:00 来源:WEB开发网添加类型 NetHeaderHandler.SoapHeaderHandler 的公共成员变量。
插入 SOAP 头属性。
清单 5. 用 VB.NET 声明头的示例
Public headerValue As NetHeaderHandler.SoapHeaderHandler
添加头属性
决定如何添加头属性并不容易,因为头属性不是由 Microsoft 良好文档化的,并且关于如何使用它们的可用示例很少。在大多数情况下,您将以看起来类似于 清单6的代码结束。
清单 6. 头属性的示例
System.Web.Services.Protocols.SoapHeaderAttribute("headerValue", _
Direction:=System.Web.Services.Protocols.SoapHeaderDirection.In, Required:=True), _
System.Web.Services.Protocols.SoapRpcMethodAttribute("",
RequestNamespace:=
"http://ibm.com/myarticle.myarticlecontrollers. TestControllerEJB",
ResponseNamespace:=
"http://ibm.com/myarticle.myarticlecontrollers. TestControllerEJB")
创建此代码并将其保存为 NetProxies.dll。
在 VB.NET 中将序列化器作为头的一部分进行传送
一件您已经做过的并且可以作为最后的步骤的事情是——通过 .NET 客户端应用程序调用 J2EE 应用程序服务器(参见 清单7)。
清单 7. 用 VB.NET 创建的客户端代码的示例
Dim strURL as string
strURL = "http://server1:9080/TestWebServices/servlet/rpcrouter"/"
Dim oNetProxy As New NetProxies.ibm.com.TestControllerEJBService()
oNetProxy.Url = gstrURL
'invoke my controller and return it in serialized form
Dim strSerializedTestController as string
strSerializedTestController =
oNetProxy.getSerializedTestController("John","password")
Dim oNetHeaderHandler as New NetHeaderHandler.SoapHeaderHandler
oNetHeaderHandler.HeaderValue = strSerializedTestController
oNetProxy.headerValue = oNetHeaderHandler
Dim strUserName as string
strUserName = oNetProxy.getUserName()
总结
本文介绍了如何连接到 J2EE 服务器应用程序(它使用有状态的会话 Bean 作为其体系结构的一部分)。为了调用这样的 Bean,您使用了 Visual Basic 6.0 Soap 客户端和 VB.NET Soap 客户端。此外,本文还列出了如何克服在使用 Microsoft Soap 客户端和 WebSphere Soap 服务器时出现的互操作性问题。
更多精彩
赞助商链接