利用 SOAP 头保持 EJB 状态:处理 VB.6 和 VB.NET SOAP 客户端中的状态
2010-03-23 00:00:00 来源:WEB开发网在 VB 6.0 中将序列化控制器作为头的一部分进行传送
在客户端中,您可以实例化 VBHeaderHandler 类,将 HeaderValue 设置为 base64 编码的序列化控制器,最后,将 SoapClient30 的 HeaderHandler 特性设置为 HeaderHandler 类的实例。同 清单2中的代码示例一样,您可以首先将序列化控制器存储在一个字符串变量中,然后将此变量赋给 HeaderValue 变量。
清单2. 在 VB 6.0 中使用头传送序列化控制器的示例
Dim objSoapClient As SoapClient30
Set objSoapClient = CreateObject("MSSOAP.SoapClient30")
objSoapClient.MSSoapInit "http://server1:9080/MyTest/TestControllerEJBService.wsdl",
"TestControllerEJBService"
Dim strSerializedTestController as String
strSerializedTestController =
objSoapClient.getSerializedTestController("John","password")
Dim objHeaderHandler as VBHeaderHandler.clsVBHeaderHandler
Set objHeaderHandler = CreateObject("VBHeaderHandler.clsVBHeaderHandler")
objHeaderHandler.HeaderValue = strSerializedTestController
'now let's try to invoke the same controller
Set objSoapClient.HeaderHandler = objHeaderHandler
Dim strUserName as String
strUserName = objSoapClient.getUserName()
MsgBox(strUserName)
服务器端的需求和互操作性技巧
在服务器端,您将需要创建 SOAP 提供者,SOAP 提供者将解释 SOAP 消息,从 SOAP 头提取序列化控制器,然后反序列化它。另外,您还将需要把数据信息添加到部署描述符(dds.xml)中,因为 SoapClient30 不包括 SOAP 消息中的数据类型信息。
更多精彩
赞助商链接