Solved

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

Posted on 2008-10-18
2
258 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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

Here I am going to explain creating proxies at runtime for WCF Service. So basically we use to generate proxies using Add Service Reference and then giving the Url of the WCF service then generate proxy files at client side. Ok, what if something ge…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

821 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