Solved

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

Posted on 2008-10-18
2
265 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

Question has a verified solution.

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

While working on Silverlight and WCF application, I faced one issue where fault exception occurred at WCF operation contract is not getting propagated to Silverlight client. So after searching net I came to know that it was behavior by default for s…
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…
Come and listen to Percona CEO Peter Zaitsev discuss what’s new in Percona open source software, including Percona Server for MySQL (https://www.percona.com/software/mysql-database/percona-server) and MongoDB (https://www.percona.com/software/mongo-…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

726 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