eonic
asked on
How to maintain a session whilst using Web Reference from a VB app.
We are using VB.net to consume a WSRP web service on a J Boss Java Application Server.
We have loaded the web service as a Web Reference in Visual Studio 2005 and all of the objects are exposed and works well. Until we pass through a second request or return data, this then seems to activate a new session for every Web Page.
However WSRP requires that the user session is maintained that is passed back in the response
Cookie: JSESSIONID=8B38B5A866EB541 3A816A70AC 7D4AA01
How can I tie the SOAP session to the users web session?
How can I configure the web reference to maintain the session state?
We have loaded the web service as a Web Reference in Visual Studio 2005 and all of the objects are exposed and works well. Until we pass through a second request or return data, this then seems to activate a new session for every Web Page.
However WSRP requires that the user session is maintained that is passed back in the response
Cookie: JSESSIONID=8B38B5A866EB541
How can I tie the SOAP session to the users web session?
How can I configure the web reference to maintain the session state?
'Registration This can be reused
Dim oqReg As New JbossWSRP.WSRP_v1_Registration_Binding_SOAP
Dim oqRegCtx As JbossWSRP.RegistrationContext
If MyBase.goApp("JbossReg") Is Nothing Then
Dim oqRegD As JbossWSRP.RegistrationData = New JbossWSRP.RegistrationData
oqRegD.consumerName = "EonicConsumer13"
oqRegD.consumerAgent = "EonicWeb.4.1"
oqRegD.methodGetSupported = False
oqRegCtx = oqReg.register(oqRegD)
MyBase.goApp("JbossReg") = oqRegCtx
Else
oqRegCtx = MyBase.goApp("JbossReg")
End If
'getMarkup
Dim oqMarkup As New JbossWSRP.WSRP_v1_Markup_Binding_SOAP
Dim oqPortCtx As JbossWSRP.PortletContext = New JbossWSRP.PortletContext
oqPortCtx.portletHandle = "quotation.ShippingPlusQuotationPortlet"
Dim oqRunCtx As JbossWSRP.RuntimeContext = New JbossWSRP.RuntimeContext
oqRunCtx.userAuthentication = "wsrp:none"
oqRunCtx.portletInstanceKey = "shipinstance"
oqRunCtx.namespacePrefix = "ship_namespace"
Dim oqUserCtx As JbossWSRP.UserContext = New JbossWSRP.UserContext
oqUserCtx.userContextKey = "1"
Dim oMarkParams As JbossWSRP.MarkupParams = New JbossWSRP.MarkupParams
oMarkParams.secureClientCommunication = False
Dim aLocale(0) As String
aLocale(0) = "en-GB"
oMarkParams.locales = aLocale
Dim aMimeTypes(0) As String
aMimeTypes(0) = "text/html"
oMarkParams.mimeTypes = aMimeTypes
oMarkParams.mode = "wsrp:view"
oMarkParams.windowState = "wsrp:normal"
Dim oClientData As JbossWSRP.ClientData = New JbossWSRP.ClientData
oClientData.userAgent = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-GB; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3"
oMarkParams.clientData = oClientData
'Interaction Params
If moRequest.Form.Count > 0 Then
'if we have a form submit the values
Dim oqInteract As JbossWSRP.InteractionParams = New JbossWSRP.InteractionParams
oqInteract.portletStateChange = JbossWSRP.StateChange.cloneBeforeWrite
Dim oqNamedString(moRequest.Form.Count) As JbossWSRP.NamedString
Dim item As Object
Dim i As Long = 0
For Each item In moRequest.Form
oqNamedString(i) = New JbossWSRP.NamedString
oqNamedString(i).name = CStr(item)
oqNamedString(i).value = moRequest.Form(CStr(item))
i = i + 1
Next
oqInteract.formParameters = oqNamedString
Dim oqBLKResponse As JbossWSRP.BlockingInteractionResponse
Dim oqBlkInt As JbossWSRP.performBlockingInteraction = New JbossWSRP.performBlockingInteraction
oqBlkInt.portletContext = oqPortCtx
oqBlkInt.registrationContext = oqRegCtx
oqBlkInt.markupParams = oMarkParams
oqBlkInt.userContext = oqUserCtx
oqBlkInt.runtimeContext = oqRunCtx
oqBlkInt.interactionParams = oqInteract
oqBLKResponse = oqMarkup.performBlockingInteraction(oqBlkInt)
End If
Dim oqResponse As JbossWSRP.MarkupResponse
Dim oqGetMarkup As JbossWSRP.getMarkup = New JbossWSRP.getMarkup()
oqGetMarkup.portletContext = oqPortCtx
oqGetMarkup.registrationContext = oqRegCtx
oqGetMarkup.markupParams = oMarkParams
oqGetMarkup.userContext = oqUserCtx
oqGetMarkup.runtimeContext = oqRunCtx
oqResponse = oqMarkup.getMarkup(oqGetMarkup)
sResponse = oqResponse.markupContext.markupString
oCNode.InnerXml = sResponse
'Strip out the form Submission URL
Dim oFormElmt As XmlElement
oFormElmt = oCNode.SelectSingleNode("form")
If Not (oFormElmt Is Nothing) Then
oFormElmt.SetAttribute("action", "")
End If
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.