Solved

How to maintain a session whilst using Web Reference from a VB app.

Posted on 2008-10-18
2
259 Views
Last Modified: 2013-11-07
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=8B38B5A866EB5413A816A70AC7D4AA01

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

Open in new window

0
Comment
Question by:eonic
2 Comments
 
LVL 1

Accepted Solution

by:
eonic earned 0 total points
ID: 22975147
We have now written our own native SOAP handler to deal with this specific issue.
0

Featured Post

Space-Age Communications Transitions to DevOps

ViaSat, a global provider of satellite and wireless communications, securely connects businesses, governments, and organizations to the Internet. Learn how ViaSat’s Network Solutions Engineer, drove the transition from a traditional network support to a DevOps-centric model.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question