Http session distributed on different servers?
Hello.
I have several webapps, running on different servers (I mean hardware servers). Say, several tomcats each runnig a webapp. Say, one of these servers is the main server and others are performing some auxillary web actions. I'd like that a client would authenticate on the main server and then her session will become valid for other non-main servers. What are the standard mechanisms for distributing an http-session? Can I have some ready solution because I do not want to invent it myself..
Thank you, any advice is appreciated!
As i know, Any client can't access a session of other client.
The client of ServerA's session is a first browser.
"A new browser window" is a new client on ServerB.
That mean first browser and second new browser are different clients for weblogic.
So new browser can't access first browser's session on ServerA.
This is not issue of cluster or browser.
Similar Messages
-
Session Sharing on Different Servers
Is it possible to access the data of a session created in one server
instance from a different server instance, without necessarily
clustering? And if so - how?
For example:
User has a session created and some data stored on session of
server1.domain.com.
User then goes to server2.domain.com and accesses data of session
created on server1.domain.com.
TJS
hi!
you look them up, just the same way as at the same container. you just have to specify the location of the JNDI, where the beans should be looked up (environment settings).
Hashtable env = new Hashtable();
// com.evermind.server.rmi.RMIInitialContextFactory IS IMPORTANT
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
env.put(Context.SECURITY_PRINCIPAL, "admin"); // user
env.put(Context.SECURITY_CREDENTIALS, "admin"); // pwd
env.put(Context.PROVIDER_URL, "ormi://OC4J2/BeanAppl"); //location + applname
Context context = new InitialContext(env);
SBHome sbHome = (SBHome)PortableRemoteObject.narrow(context.lookup("SB"), SB.class);
SB sb = SBHome.create();
hope 2 help you ;o)
ed -
How to disable weblogic built-in HTTP session filter?
Hi,
I want to use my own HTTP seesion filter to manage HTTP session on weblogic clustered servers. It seems that weblogic servers plugin its HTTP session filter already for servlet. How can I use my own HTTP session filter to replace WebLogic built-in session filter?
Thank you for your help.Could you be more elaborate on your requirement.
Weblogic servers plugin provides a way to handle requests based on url content. or content type and so on, it dosent do much with users sessions other than for session stickyness. -
Revision: 21394
Revision: 21394
Author: [email protected]
Date: 2011-06-16 12:34:13 -0700 (Thu, 16 Jun 2011)
Log Message:
bug fix for watson 2887837 Not getting duplicate session detected error when same flex client id is used from two different HTTP sessions in CRX.
get the sessions id before we invalidate the duplicate session.
Checkintests pass
Modified Paths:
blazeds/trunk/modules/core/src/flex/messaging/endpoints/BaseHTTPEndpoint.javaFor our profect I think this issue was caused as follows:
Believing that remoting was full asynchronous we fired a 2 or 3 remote calls to the server at the same time ( within the same function ) - usually when the users goes to a new section of the app.
This seemed to trigger the duplicate http session error since according to http://blogs.adobe.com/lin/2011/05/duplication-session-error.html two remote calls arriving before a session is created will cause 2 sessions to be created.
Our current solution ( too early to say it works ) is to daisy chain the multiple calls together .
Also there seemed to be an issue where mobile apps that never quit ( thanks Apple! ) caused the error when activated after a few hours.
I guess the session expires on the server and the error above occurs on activation.
So the mobile apps now ping the server with a remote call when activated after sleeping for more than one hour.
All duplicate http errors are silently caught and reported.
Fingers crossed we won't get any more! -
10g: HTTP Server and OC4J on different servers?
Can anyone assist with configuring HTTP Server and OC4J on different servers?
I installed AS 10g on both; our application runs fine on one server, with the HTTP Server and OC4J both on the same box.
I need to also test this with the HTTP Server on a separate box.
I added this to mod_ocj4.conf:
Oc4jMount /indox-qa1
instance://cvodev2:oas_dev2.cvodev2.int.sys.com:indox-qa1
Oc4jMount /indox-qa1/*
instance://cvodev2:oas_dev2.cvodev2.int.sys.com:indox-qa1
But when I try to access something like http://cvodev4/indox-qa1 I get this in the logs:
[Wed Jul 06 16:54:10 2005] [warn] [client 10.1.1.231] [ecid: 1120683250:192.152.136.127:1248:1544:1,0] MOD_OC4J_0184: Failed to find an oc4j process for destination: instance://cvodev2.int.camsys.com:oas_dev2.cvodev2.int.camsys.com:indor-qa1
[Wed Jul 06 16:54:10 2005] [error] [client 10.1.1.231] [ecid: 1120683250:192.152.136.127:1248:1544:1,0] MOD_OC4J_0145: There is no oc4j process (for destination: instance://cvodev2.int.camsys.com:oas_dev2.cvodev2.int.camsys.com:indor-qa1) available to service request.
[Wed Jul 06 16:54:10 2005] [error] [client 10.1.1.231] [ecid: 1120683250:192.152.136.127:1248:1544:1,0] MOD_OC4J_0119: Failed to get an oc4j process for destination: instance://cvodev2.int.camsys.com:oas_dev2.cvodev2.int.camsys.com:indor-qa1
[Wed Jul 06 16:54:10 2005] [error] [client 10.1.1.231] [ecid: 1120683250:192.152.136.127:1248:1544:1,0] MOD_OC4J_0013: Failed to call destination: instance://cvodev2.int.camsys.com:oas_dev2.cvodev2.int.camsys.com:indor-qa1's service() to service the request.
I did some ethernet sniffing and it doesn't look to me like the OHS box is even trying to contact the OC4J box.
Is there more configuration I need to do beyond this?
Thanks,
dwhhi user11159690
Maybe this can help:
"Oracle® HTTP Server Administrator's Guide 10g Release 3 (10.1.3) B25211-02"
"7.32 mod_oc4j"
http://download.oracle.com/docs/cd/B25221_04/web.1013/b25211/confmods.htm#i1025739
Maybe more specifically "Oc4jMount":
http://download.oracle.com/docs/cd/B25221_04/web.1013/b25211/confmods.htm#CIHJBGFB
(tip : You can use "Your Control Panel" to make your name visible in forum posts.)
success
Jan Vervecken -
Getting attributes from session between two different applications
I'm developing with JDK 1.3 and deploying my webapp at ORACLE 9iAS.
I would like to jump between JSPs deployed at differents OC4J instances and
keep session object. I've seen I can get sessionID and it's the same but the attributes have disapeared.
I jump using JavaScript code (document.location.href).
Should I use a <form> ?
Should I use getServletContext() method ?
I dont know even if it's possible and I don't want to loose my time looking for a solution that doesn't exist.
NEED HELP, AN EXAMPLE OR WHATEVER USEFUL.
... THE SOON AS POSSIBLE
THANX in advance
PS..- I have already look for in this forum but I didn't get any info to solve my doubts. If I mistaken please let me knowOk.
getServletContext().getContext() may return null in 'security conscious' servers. Apparently this is your case, therefore you wouldn't be able to use it to store global data...
As for sharing sessions directly between different web apps, the servlet spec (since 2.2 at least) explicitely prohibits it.
The link provided by tolmank about pseudo-sessions should address your issue, since it will allow you to distribute your session data on your different webapps.
Some other alternatives would be :
-store the session data in the DB (slow)
-use java serialization
-use RMI
-use JNDI
-if you're using Tomcat, you can implement single-signon accross multiple apps using cookies :
http://www.ingrid.org/jajakarta/tomcat/tomcat-4.0b5/src/catalina/docs/singlesignon.html -
In-memory replication of http session is not working in BEA7 cluster
Hi everyone,
I have 3 managed servers in Bea7.0 SP4 in a cluster. The client requests are sent
through apache web server. I have given cluster address as URL in httpd.conf of
apache server which sends the client requests for dynamic pages such as JSPs and
servlets to the weblogic cluster.
Load balancing is working fine. I ensured this from the log files of all the 3
servers. All the 3 servers are getting different client requests and thus load
balancing is working.
Now, I wanted to achieve Fail-over. I do not think that i should use proxy plug-in
for this. I feel the cluster itself will handle fail-over provided i make the
http session as memory replicated.
I updated the weblogic.xml with the following entry :
<session-descriptor>
<param-name>PersistentStoreType</param-name>
<param-value>replicated</param-value>
</session-param>
</session-descriptor>
I guess this is sufficient to make the http session as cluster aware.
But when I shutdown server1, the user connected to server1 will be kicked out
of the session and come to login page through server2 or server3 which are running
fine.
Could anyone help me to achieve http session as cluster aware. Does it indicate
that I have to go for WLS proxy – HttpClusterServlet to achieve fail over for
http session ?
BTW, for your info, i am using setAttribute() and getAttribute() while manipulating
the session.
thanks in advance.
Hi Ryan,
Thanks for ur valuable input.
I can see failover working.
But, I can not continue with the same session in my application.
I printed session Ids before and after failover, I found both are different.
I guess session replication is a responsibility of weblogic/apache plugin.
If not please let me know which all settings I should do to make failover working?
Thanks again.
Plad
"ryan upton" <ryanjupton at learningvoyage dot com> wrote:
>Plad,
>
>Are you trying to gracefully shut down the server? If you are then the
>problem that you say you can't identify is simply the server's default
>behavior which is to wait for all non-replicated sessions to be dropped
>or
>timed out before killing the process. Try forcing the shutdown: kill
>-9 the
>PID or CTRL-C if you started the server from the command line. You can
>also
>check the ``Ignore Sessions During Shutdown" checkbox under the server's
>control tab in the admin console, this should allow you to shut down
>gracefully without waiting for session timeout. BTW your sequence is
>off
>in #5 below, the replication doesn't occur upon failure, the replication
>has
>already happened once you created the session object on the first server,
>I
>think maybe you're confusing replication with failover.
>
>~RU
>
>"Plad" <[email protected]> wrote in message
>news:[email protected]...
>>
>> Hi,
>> I have 2 managed servers in a cluster.
>>
>> 1. I have got a DNS name configured which maps to these 2 managed server's
>IP
>> addresses.
>> 2. I can browse my site using this DNS name.
>> In HTTPD.conf I have :
>>
>> ServerName dev.a.b.net
>>
>> <IfModule mod_weblogic.c>
>> WebLogicCluster 10.1.38.232:7023,10.1.34.51:7023
>> MatchExpression *.*
>> </IfModule>
>>
>> LoadModule weblogic_module modules/mod_wl_20.so
>>
>> 3. I have adeded session descriptor in weblogic.xml , also enabled
>proxy
>plugin
>> in weblogic console.
>>
>> 4. I tested accessing my application using DNS url after shutting down
>alternatively
>> each manaed server. I can access application.
>>
>> 5. Now, problem comes when I access a managed server1 , keeping server2
>down.
>> I am able to access my application.
>> Now, I start the server2.
>> (Here I am supposing that replication should occur)
>> Then I am shutting down server1.
>> But, this time the server log shows me following:
>>
>>
>> 9:58:51 AM GMT+05:30 NOTICE Web application(s) chlist still have
>non-replicated
>> sessions after 2 minutes of initiating SUSPEND. Waiting for non-replicated
>sessions
>> to finish.
>> 10:00:51 AM GMT+05:30 NOTICE Web application(s) chlist still have
>non-replicated
>> sessions after 4 minutes of initiating SUSPEND. Waiting for non-replicated
>sessions
>> to finish.
>>
>> I am unable to make out where the problem is?
>> Can it be a problem of Liecense? Is there any specialcluster liecense
>for
>weblogic8?
>>
>> Hoping to get replies.
>> Thanx.
>> Plad
>>
>> "ryan upton" <ryanjupton at learningvoyage dot com> wrote:
>> >See my reply to your first post, but I've also added a few comments
>here.
>> >
>> >"jyothi" <[email protected]> wrote in message
>> >news:[email protected]...
>> >>
>> >> I guess someone from bea support team only can answer both your
>question
>> >and mine.
>> >> As per my knowledge, we do not need to do any setup at Apache
>side
>> >regarding
>> >> cluster other than mentioning cluster address as URL while
>contacting
>> >WLS
>> >> from apache.
>> >>
>> >> I hope someone from Bea, will help us. I do not think that we
>> >go for
>> >WLS
>> >> proxy plug-in using HttpClusterServlet for making session replication.
>> > I
>> >strongly
>> >> feel that the cluster itself be able to manage the fail-over of
>> >http
>> >sessions
>> >> provided we put the entry "PersistentStoreType" in weblogic.xml
>> >regarding
>> >> the session replication.
>> >>
>> >
>> >The cluster does handle the management of Sessions. The clustered
>> >applications still create the Session objects and the cluster manages
>> >them
>> >as per your deployment descriptor settings (replicated, JDBC, File)
>however
>> >the proxy has to be aware of which server the client has an affinity
>> >for
>> >(only with replicated sessions) and it does that by reading a cookie
>> >passed
>> >back from the server that handled the initial request and created
>the
>> >primary session object. The proxy has a list of both the primary
>and
>> >secondary server locations from this cookie that it can use to failover
>> >the
>> >request if the primary server fails. Clusters _DO NOT_ failover nor
>> >do they
>> >load balance, that's the job of your proxy, whether you're using the
>> >HTTPClusterServlet, WLS Plug-in or a more sophisticated hardware load
>> >balancer like Big IPs F5
>> >
>> >> jyothi
>> >>
>> >
>> >~RU
>> >
>> >
>>
>
>
-
Redirect service from http to https, session is lost
I have setup two web sites using NT 4.0 IIS so that both
"http://nossl/mybeanbeans" and "https://ssltest/mybeanbeans"
can execute the commerce server mybuybeans example.
Then I modify the shoppingCartDetail.jsp and commandAssembler.jsp
(files attached) hoping that when I click the "Checkout" button
on the Shopping Cart screen, it will redirect the service from
http to https.
The URL is redirected to "https" but it depicts the welcome page
instead of showing the Order Check Out page.
Previous session information is lost.
Can anyone help me?
Thanks
<!-- Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved. -->
<%@ page errorPage="../error.jsp" %>
<%@ page import="java.lang.reflect.*" %>
<%@ page import="theory.smartx.command.*" %>
<%@ page import="examples.buybeans.client.*" %>
<%@ page extends="com.beasys.commerce.portal.admin.PortalJspBase" %>
<%@ page implements="BuyBeansJspConstants" %>
<pt:monitorsession />
<%@ include file="monitorSessionTracker.jsp" %>
<%
// Get the Command class name to instantiate
String commandClassName = request.getParameter(COMMAND_CLASS_NAME_PARAM);
System.out.println("COMMAND_CLASS_NAME_PARAM : " + commandClassName);
if (commandClassName != null) {
// Get the BuyBeansSessionTracker
BuyBeansSessionTracker sessionTracker = (BuyBeansSessionTracker)session.getValue(com.beasys.commerce.portal.admin.PortalAdminHelper.qualifiedName(BUYBEANS_SESSION_TRACKER_KEY ,request));
// Construct an array of 1 element to hold the BuyBeansSessionTracker
// parameter type that the constructor takes.
Class constructorParamTypes[] = new Class[1];
constructorParamTypes[0] = sessionTracker.getClass();
try {
// Get the Class for the concrete Command
Class commandClass = Class.forName(commandClassName);
// Get constructor that takes the BuyBeansSessionTracker as argument
Constructor commandClassCtor = commandClass.getConstructor(constructorParamTypes);
// Set the BuyBeansSessionTracker argument for the constructor
Object ctorParams[] = new Object[1];
ctorParams[0] = sessionTracker;
// Create the instance of the concrete Command
Command command = (Command) commandClassCtor.newInstance(ctorParams);
// Pass the HttpRequest to the command so that it can
// read the parameter and then execute it.
command.assemble(request);
// Store the outstanding command in the session tracker so that
// the main portal page can execute it.
sessionTracker.setCommand(command);
setOverrideDestination(request, getHomePage(request));
%>
<%-- Added by Warren --%>
<%
String queryString = request.getQueryString();
String encodeURL=response.encodeURL(getTrafficURI(request));
String redirectURL=response.encodeRedirectURL("https://ssltest"+encodeURL);
System.out.println("====================");
System.out.println("queryString:" + queryString);
System.out.println("encodeURL:" + encodeURL);
System.out.println("redirectURL:" + redirectURL);
System.out.println("========before sendRedirect============");
response.sendRedirect(redirectURL);
System.out.println("========after sendRedirect============");
%>
<%
System.out.println("======== end commandAssemblerSSL ============");
catch (ClassNotFoundException cnfe) {
throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, cnfe);
catch (NoSuchMethodException nsme) {
throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, nsme);
catch (IllegalAccessException illegalAccessEx) {
throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, illegalAccessEx);
catch (IllegalArgumentException illegalArgEx) {
throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, illegalArgEx);
catch (InstantiationException ie) {
throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, ie);
catch (InvocationTargetException ite) {
throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, ite);
%>
<!-- Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved. -->
<%@ taglib uri="lib/wljsp.jar" prefix="wl" %>
<%@ taglib uri="lib/esportal.jar" prefix="pt" %>
<%@ page errorPage="../error.jsp" %>
<%@ page import="com.beasys.commerce.portal.Portlet" %>
<%@ page import="examples.buybeans.client.*" %>
<%@ page import="theory.smart.ebusiness.item.*" %>
<%@ page import="theory.smart.ebusiness.order.*" %>
<%@ page import="theory.smart.axiom.units.*" %>
<%@ page import="com.beasys.commerce.portal.tags.PortalTagConstants" %>
<%@ page extends="com.beasys.commerce.portal.admin.PortalJspBase"%>
<%@ page implements="BuyBeansJspConstants"%>
<pt:monitorsession />
<%@ include file="monitorSessionTracker.jsp" %>
<SCRIPT LANGUAGE="JavaScript">
<!--
function submitShoppingCartDetailsForm(commandClassName, bbContent)
document.ShoppingCartDetailForm.<%= COMMAND_CLASS_NAME_PARAM %>.value = commandClassName;
document.ShoppingCartDetailForm.<%= BUYBEANS_CONTENT_PARAM %>.value = bbContent;
document.ShoppingCartDetailForm.submit();
//-->
</SCRIPT>
<%
BuyBeansSessionTracker sessionTracker = (BuyBeansSessionTracker)getSessionValue( BUYBEANS_SESSION_TRACKER_KEY, request );
// Get the current Order
Order currOrder = sessionTracker.getEBusinessSession().getOrder();
// Get all the items in the cart as a Vector of orderlines from the session tracker
java.util.Vector orderLines = sessionTracker.getCartOrderLines();
%>
<!-- Display the items from the shopping cart -->
<table width="99%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor=FFFFFF>
<td> </td>
<tr bgcolor="#FFFFFF">
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="3" align="center" dwcopytype="CopyTableRow">
<tr>
<td colspan="6"><font face="Arial, Helvetica, Verdana, sans-serif"><%@ include file="contentMessages.jsp" %></font></td>
</tr>
<tr>
<td colspan="6"> <%= JspHelperBase.formatAsTitle("Shopping Cart - SSL*** ") %> </td>
</tr>
<tr>
<td><font face="Arial,Helvetica,sans-serif" color="#666600" size="2"><b>Product ID</b></font></td>
<td><font face="Arial,Helvetica,sans-serif" color="#666600" size="2"><b>Description</b></font></td>
<td><font face="Arial,Helvetica,sans-serif" color="#666600" size="2"><b>Quantity</b></font></td>
<td align="right"><font face="Arial,Helvetica,sans-serif" color="#666600" size="2"><b>Price</b></font></td>
<td align="right"><font face="Arial,Helvetica,sans-serif" color="#666600" size="2"><b>Subtotal</b></font></td>
<td></td>
</tr>
<form method="get" name="ShoppingCartDetailForm" action="<%= response.encodeURL(getTrafficURI(request)) %>" >
<%
// Declare a currency format type
Quantity one = QuantityHome.create();
one.setCount(1);
// Print out all the items in the cart
for(int i = 0; i<orderLines.size(); i++ ) {
OrderLine currOrderLine = (OrderLine)orderLines.elementAt(i);
Item myItem = currOrderLine.getItem();
ItemValue iv = myItem.getItemByValue();
String desc = iv.description;
String id = iv.identifier;
// Specify the color of the row
String rowColor = (i%2 == 0) ? ROW_BACKGROUND_COLOR_1 : ROW_BACKGROUND_COLOR_2 ;
// Specify the name of the quantity text field - name it as qty+i
String qtyInputName = ORDER_QUANTITY + i;
// Specify the name of the remove checkbox
String removeInputName = REMOVE_CHECKED + i;
%>
<!-- print out the details of each item -->
<tr bgcolor="<%= rowColor %>">
<td><%= id %></td>
<td><%= desc %></td>
<td>
<input type="text" name="<%= qtyInputName %>" size=3 maxlength=3 value= "<%= JspHelperBase.formatQuantityAsInteger(currOrderLine.getQuantity()) %>" >
</td>
<td align="right"><%= JspHelperBase.formatPriceAsCurrency(myItem.calculatePrice(one, null)) %></td>
<td align="right"><%= JspHelperBase.formatPriceAsCurrency(currOrderLine.getLinePrice(null)) %></td>
<td><input type="checkbox" name="<%= removeInputName %>" value="<%=REMOVE_CHECKED %>" > Remove </td>
</tr>
<%
%>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td align="right"> <font face="Arial,Helvetica,sans-serif" size="3" color="#666600"><b>Total:</b></font></td>
<td>
<div align="right"><font face="Arial, Helvetica, sans-serif" size="3" color="#990000"><b><%= JspHelperBase.formatPriceAsCurrency(currOrder.getTotalPrice()) %>
</b> </font> </div>
</td>
<td>
<input type="button" name="<%=UPDATE_CART_BUTTON %>"
onClick="submitShoppingCartDetailsForm('examples.buybeans.client.UpdateShoppingCartCommand', '<%= SHOPPING_CART_DETAILS_JSP %>')"
value="Update">
</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>
<input type="button" name="<%=CHECKOUT_BUTTON %>"
onClick="submitShoppingCartDetailsForm('examples.buybeans.client.CheckOutCommand', '<%= CHECKOUT_JSP %>')"
value="Checkout">
</td>
</tr>
<tr colspan="6">
<td> </td>
</tr>
<%-- DESTINATION_TAG is required because the form action goes to getTrafficURI() --%>
<%-- In this case, the destination is the command assembler --%>
<%-- <input type=hidden name="<%= DESTINATION_TAG %>" value="<%= COMMAND_ASSEMBLER_JSP %>"> --%>
<%-- The following line is used for testing SSL redirect --%>
<input type=hidden name="<%= DESTINATION_TAG %>" value="/portals/buybeans/portlets/commandAssemblerSSL.jsp" >
<%-- The following two parameters are set by the JavaScript function based --%>
<%-- on the button that the user presses (default value are provided ) --%>
<input type=hidden name="<%= BUYBEANS_CONTENT_PARAM %>" value="<%= SHOPPING_CART_DETAILS_JSP %>">
<input type=hidden name="<%= COMMAND_CLASS_NAME_PARAM %>" value="examples.buybeans.client.UpdateShoppingCartCommand">
</form>
</table>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
the problem is when the cookie is exchanged between the browser
and the app server IE treats request coming from http://bc.com:7001
and http://bc.com:7002 as one and the same : so the browser maintains
the same session but netscape treats this as responses coming from two
different servers and hence u lost the session.
I assume u are having this problem with netscape and not IE.
the solution is set this property in the weblogic.properties file
weblogic.httpd.session.cookie.domain=.bc.com
-Sumanth
"senthil ramiah" <[email protected]> wrote in message
news:[email protected]...
>
> Hi,
> Did you receive any replies for this question.
> thanx
> senthil
>
> Warren Li <[email protected]> wrote:
> >
> >I have setup two web sites using NT 4.0 IIS so that both
> > "http://nossl/mybeanbeans" and "https://ssltest/mybeanbeans"
> >can execute the commerce server mybuybeans example.
> >
> > Then I modify the shoppingCartDetail.jsp and commandAssembler.jsp
> > (files attached) hoping that when I click the "Checkout" button
> > on the Shopping Cart screen, it will redirect the service from
> > http to https.
> >
> >The URL is redirected to "https" but it depicts the welcome page
> > instead of showing the Order Check Out page.
> > Previous session information is lost.
> >
> >Can anyone help me?
> >
> >Thanks
> >
> >
> >
> ><!-- Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved. -->
> >
> ><%@ page errorPage="../error.jsp" %>
> ><%@ page import="java.lang.reflect.*" %>
> ><%@ page import="theory.smartx.command.*" %>
> ><%@ page import="examples.buybeans.client.*" %>
> >
> ><%@ page extends="com.beasys.commerce.portal.admin.PortalJspBase" %>
> ><%@ page implements="BuyBeansJspConstants" %>
> >
> ><pt:monitorsession />
> >
> ><%@ include file="monitorSessionTracker.jsp" %>
> >
> ><%
> > // Get the Command class name to instantiate
> > String commandClassName =
request.getParameter(COMMAND_CLASS_NAME_PARAM);
> > System.out.println("COMMAND_CLASS_NAME_PARAM : " + commandClassName);
> > if (commandClassName != null) {
> >
> > // Get the BuyBeansSessionTracker
> > BuyBeansSessionTracker sessionTracker =
(BuyBeansSessionTracker)session.getValue(com.beasys.commerce.portal.admin.Po
rtalAdminHelper.qualifiedName(BUYBEANS_SESSION_TRACKER_KEY ,request));
> >
> > // Construct an array of 1 element to hold the
BuyBeansSessionTracker
> > // parameter type that the constructor takes.
> > Class constructorParamTypes[] = new Class[1];
> > constructorParamTypes[0] = sessionTracker.getClass();
> >
> > try {
> > // Get the Class for the concrete Command
> > Class commandClass = Class.forName(commandClassName);
> >
> > // Get constructor that takes the BuyBeansSessionTracker as
argument
> > Constructor commandClassCtor =
commandClass.getConstructor(constructorParamTypes);
> >
> > // Set the BuyBeansSessionTracker argument for the constructor
> > Object ctorParams[] = new Object[1];
> > ctorParams[0] = sessionTracker;
> >
> > // Create the instance of the concrete Command
> > Command command = (Command)
commandClassCtor.newInstance(ctorParams);
> >
> > // Pass the HttpRequest to the command so that it can
> > // read the parameter and then execute it.
> > command.assemble(request);
> >
> > // Store the outstanding command in the session tracker so that
> > // the main portal page can execute it.
> > sessionTracker.setCommand(command);
> > setOverrideDestination(request, getHomePage(request));
> >%>
> >
> ><%-- Added by Warren --%>
> ><%
> > String queryString = request.getQueryString();
> > String encodeURL=response.encodeURL(getTrafficURI(request));
> > String
redirectURL=response.encodeRedirectURL("https://ssltest"+encodeURL);
> > System.out.println("====================");
> > System.out.println("queryString:" + queryString);
> > System.out.println("encodeURL:" + encodeURL);
> > System.out.println("redirectURL:" + redirectURL);
> > System.out.println("========before sendRedirect============");
> > response.sendRedirect(redirectURL);
> > System.out.println("========after sendRedirect============");
> >%>
> >
> ><%
> > System.out.println("======== end commandAssemblerSSL ============");
> > }
> > catch (ClassNotFoundException cnfe) {
> > throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, cnfe);
> > }
> > catch (NoSuchMethodException nsme) {
> > throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, nsme);
> > }
> > catch (IllegalAccessException illegalAccessEx) {
> > throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600,
illegalAccessEx);
> > }
> > catch (IllegalArgumentException illegalArgEx) {
> > throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600,
illegalArgEx);
> > }
> > catch (InstantiationException ie) {
> > throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, ie);
> > }
> > catch (InvocationTargetException ite) {
> > throw new ApplicationException(BUYBEANS_CATALOG_NAME, 600, ite);
> > }
> > }
> >
> >%>
> >
> >
> ><!-- Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved. -->
> >
> ><%@ taglib uri="lib/wljsp.jar" prefix="wl" %>
> ><%@ taglib uri="lib/esportal.jar" prefix="pt" %>
> >
> ><%@ page errorPage="../error.jsp" %>
> ><%@ page import="com.beasys.commerce.portal.Portlet" %>
> ><%@ page import="examples.buybeans.client.*" %>
> ><%@ page import="theory.smart.ebusiness.item.*" %>
> ><%@ page import="theory.smart.ebusiness.order.*" %>
> ><%@ page import="theory.smart.axiom.units.*" %>
> ><%@ page import="com.beasys.commerce.portal.tags.PortalTagConstants" %>
> >
> ><%@ page extends="com.beasys.commerce.portal.admin.PortalJspBase"%>
> ><%@ page implements="BuyBeansJspConstants"%>
> >
> >
> ><pt:monitorsession />
> >
> ><%@ include file="monitorSessionTracker.jsp" %>
> >
> ><SCRIPT LANGUAGE="JavaScript">
> ><!--
> >function submitShoppingCartDetailsForm(commandClassName, bbContent)
> >{
> > document.ShoppingCartDetailForm.<%= COMMAND_CLASS_NAME_PARAM %>.value
= commandClassName;
> > document.ShoppingCartDetailForm.<%= BUYBEANS_CONTENT_PARAM %>.value =
bbContent;
> > document.ShoppingCartDetailForm.submit();
> >}
> >//-->
> ></SCRIPT>
> >
> ><%
> > BuyBeansSessionTracker sessionTracker =
(BuyBeansSessionTracker)getSessionValue( BUYBEANS_SESSION_TRACKER_KEY,
request );
> >
> > // Get the current Order
> > Order currOrder = sessionTracker.getEBusinessSession().getOrder();
> >
> > // Get all the items in the cart as a Vector of orderlines from the
session tracker
> > java.util.Vector orderLines = sessionTracker.getCartOrderLines();
> >%>
> >
> >
> ><!-- Display the items from the shopping cart -->
> > <table width="99%" border="0" cellspacing="0" cellpadding="0"
align="center">
> > <tr bgcolor=FFFFFF>
> > <td> </td>
> > <tr bgcolor="#FFFFFF">
> > <td>
> > <table width="95%" border="0" cellspacing="0" cellpadding="3"
align="center" dwcopytype="CopyTableRow">
> > <tr>
> > <td colspan="6"><font face="Arial, Helvetica, Verdana,
sans-serif"><%@ include file="contentMessages.jsp" %></font></td>
> > </tr>
> > <tr>
> > <td colspan="6"> <%= JspHelperBase.formatAsTitle("Shopping
Cart - SSL*** ") %> </td>
> > </tr>
> > <tr>
> > <td><font face="Arial,Helvetica,sans-serif" color="#666600"
size="2"><b>Product ID</b></font></td>
> > <td><font face="Arial,Helvetica,sans-serif" color="#666600"
size="2"><b>Description</b></font></td>
> > <td><font face="Arial,Helvetica,sans-serif" color="#666600"
size="2"><b>Quantity</b></font></td>
> > <td align="right"><font face="Arial,Helvetica,sans-serif"
color="#666600" size="2"><b>Price</b></font></td>
> > <td align="right"><font face="Arial,Helvetica,sans-serif"
color="#666600" size="2"><b>Subtotal</b></font></td>
> > <td></td>
> > </tr>
> >
> > <form method="get" name="ShoppingCartDetailForm" action="<%=
response.encodeURL(getTrafficURI(request)) %>" >
> > <%
> > // Declare a currency format type
> > Quantity one = QuantityHome.create();
> > one.setCount(1);
> >
> > // Print out all the items in the cart
> > for(int i = 0; i<orderLines.size(); i++ ) {
> > OrderLine currOrderLine =
(OrderLine)orderLines.elementAt(i);
> > Item myItem = currOrderLine.getItem();
> > ItemValue iv = myItem.getItemByValue();
> > String desc = iv.description;
> > String id = iv.identifier;
> >
> > // Specify the color of the row
> > String rowColor = (i%2 == 0) ? ROW_BACKGROUND_COLOR_1 :
ROW_BACKGROUND_COLOR_2 ;
> >
> > // Specify the name of the quantity text field - name
it as qty+i
> > String qtyInputName = ORDER_QUANTITY + i;
> >
> > // Specify the name of the remove checkbox
> > String removeInputName = REMOVE_CHECKED + i;
> >
> >
> > %>
> > <!-- print out the details of each item -->
> > <tr bgcolor="<%= rowColor %>">
> > <td><%= id %></td>
> > <td><%= desc %></td>
> > <td>
> > <input type="text" name="<%= qtyInputName %>" size=3
maxlength=3 value= "<%=
JspHelperBase.formatQuantityAsInteger(currOrderLine.getQuantity()) %>" >
> > </td>
> > <td align="right"><%=
JspHelperBase.formatPriceAsCurrency(myItem.calculatePrice(one, null))
%></td>
> > <td align="right"><%=
JspHelperBase.formatPriceAsCurrency(currOrderLine.getLinePrice(null))
%></td>
> > <td><input type="checkbox" name="<%= removeInputName %>"
value="<%=REMOVE_CHECKED %>" > Remove </td>
> > </tr>
> > <%
> > }
> > %>
> > <tr>
> > <td> </td>
> > <td> </td>
> > <td> </td>
> > <td align="right"> <font face="Arial,Helvetica,sans-serif"
size="3" color="#666600"><b>Total:</b></font></td>
> > <td>
> > <div align="right"><font face="Arial, Helvetica,
sans-serif" size="3" color="#990000"><b><%=
JspHelperBase.formatPriceAsCurrency(currOrder.getTotalPrice()) %>
> > </b> </font> </div>
> > </td>
> > <td>
> > <input type="button" name="<%=UPDATE_CART_BUTTON %>"
> >
onClick="submitShoppingCartDetailsForm('examples.buybeans.client.UpdateShopp
ingCartCommand', '<%= SHOPPING_CART_DETAILS_JSP %>')"
> > value="Update">
> > </td>
> > </tr>
> > <tr>
> > <td> </td>
> > <td> </td>
> > <td> </td>
> > <td> </td>
> > <td> </td>
> > <td>
> > <input type="button" name="<%=CHECKOUT_BUTTON %>"
> >
onClick="submitShoppingCartDetailsForm('examples.buybeans.client.CheckOutCom
mand', '<%= CHECKOUT_JSP %>')"
> > value="Checkout">
> > </td>
> > </tr>
> > <tr colspan="6">
> > <td> </td>
> > </tr>
> >
> > <%-- DESTINATION_TAG is required because the form action goes
to getTrafficURI() --%>
> > <%-- In this case, the destination is the command
--%>
> ><%-- <input type=hidden name="<%= DESTINATION_TAG %>" value="<%=
COMMAND_ASSEMBLER_JSP %>"> --%>
> >
> > <%-- The following line is used for testing SSL redirect --%>
> > <input type=hidden name="<%= DESTINATION_TAG %>"
value="/portals/buybeans/portlets/commandAssemblerSSL.jsp" >
> >
> > <%-- The following two parameters are set by the JavaScript
function based --%>
> > <%-- on the button that the user presses (default value are
provided ) --%>
> > <input type=hidden name="<%= BUYBEANS_CONTENT_PARAM %>"
value="<%= SHOPPING_CART_DETAILS_JSP %>">
> > <input type=hidden name="<%= COMMAND_CLASS_NAME_PARAM %>"
value="examples.buybeans.client.UpdateShoppingCartCommand">
> >
> > </form>
> > </table>
> > </td>
> > </tr>
> > <tr>
> > <td> </td>
> > </tr>
> ></table>
> >
>
-
CFLOGIN works, but not simultaneously on different servers/broswers
I'm using CFLOGIN with application.cfc which works great when I test it - I'll call it login session A in browser window 1.
When I simultaneously log into the same app on a different server with a different username (login session B in browser window 2), I can't login - unless I log out out of session A/browser window 1 first. Something in my new code is preventing me from logging into my app more than one time, even when the apps are on separate servers and I'm using different usernames.
We have the same app on various servers (test/development/production), and I used to be able to login on 2-3 browsers or servers at a time - and I never had a problem until recently when I made some changes to the application.cfc and login code.
I updated the code because before the session scopes and login credentials were not being initiated and terminated together (upon login/logout). Before, a user was clicking 'logout' and it was clearing the session scopes without invoking CFLOGOUT. Now, I fixed that, but I have another problem, which is that I can't log into the application on two different browsers or servers at the same time (even if I'm using different login usernames). Any suggestions would be appreciated.
<cfcomponent displayname="Application" output="false">
<cfset this.name = 'SampleApp'>
<cfset this.SessionManagement = true>
<cfset this.SetClientCookies = true>
<cfset this.SessionTimeout = CreateTimeSpan( 0, 0, 5, 0 ) />
<cffunction name="onSessionStart" access="public" returntype="void" output="false">
<cfset session.hostname = 'http://'&#CGI.HTTP_HOST#&'/'>
<cfset session.dbase = 'localdb'>
<cfset session.roles = ArrayNew(1)>
<cfreturn>
</cffunction>
<cffunction name="onApplicationStart" access="public" returntype="boolean" output="false">
<cflog file="SampleApp" type="information" text="Application started." />
<cfreturn true>
</cffunction>
<cffunction name="onApplicationEnd" returntype="void" output="false" hint="Executes on session timeout or if server shuts down.">
<cfcookie name="CFID" value="#CFID#" expires="now">
<cfcookie name="CFTOKEN" value="#CFTOKEN#" expires="now">
<cfreturn>
</cffunction>
<cffunction name="onRequestStart" access="public" returntype="void" output="true" hint="Executes before each page processes.">
<cfargument name="targetPage" type="String" required="true"/>
<cfsilent>
<cfif GetAuthUser() NEQ ''>
<cfif NOT isDefined('session.uname')>
<cfif CGI.HTTP_REFERER DOES NOT CONTAIN "login.cfm">
<cfinclude template="expired.cfm">
<cfabort>
</cfif>
</cfif>
</cfif>
<cflogin>
<!--- Flash Remoting setCredentials() passes cflogin.user and cflogin.password using checklogin.cfc --->
<cfif IsDefined('cflogin')>
<cfquery name="qValidateLogin" datasource="#session.dbase#" username="#cflogin.name#" password="#cflogin.password#">
SELECT role
FROM session_roles
</cfquery>
<cfif qValidateLogin.RecordCount GT 0>
<cfloginuser name="#cflogin.name#" password="#cflogin.password#" roles="#qValidateLogin.ROLE#">
<cflog text="User - #cflogin.name#" type="Information" file="Filename" date="yes" time="yes">
<cfelse>
<cfinclude template="login.cfm">
<cfabort>
</cfif>
<cfelse>
<cfif right(arguments.targetPage,10) is "logout.cfm">
<cflocation url="index.cfm">
<cfabort>
<cfelse>
<cfinclude template="login.cfm">
<cfabort>
</cfif>
</cfif>
</cflogin>
</cfsilent>
</cffunction>
</cfcomponent>Oh no, that was my mistake. Thank you for catching that! That query is currently not being used on my Application.cfc page, which is why I wasn't having problems with it, but I'm glad you pointed it out to me. I had that code in my Application.cfc file just incase I wanted to check login from somewhere else, but my login query is actually being called with Flash Remoting using setCredentials() to connect to login.cfc. This is the correct query in my login.cfc file:
<cfquery name="qValidateLogin" username="#session.uname#" password="#session.pword#" datasource="#session.dbase#">
select role from session_roles where role like 'xxxxx%'
</cfquery>
I do think I figured out a solution to my problem though. I found out how to use applicationToken, which I understand if it is not set, by default will be the value of application.Name. If you want users to be able to log into multiple instances of your application at the same time, you would give the applicationToken the same value. This would be great for clustered servers or sites with sub-domains.
If you wanted to force only one login for the three different sites, you could give this a different value. VERY useful. So I have:
<cfcomponent displayname="Application" output="false">
<cfset this.name = 'SampleApp'>
<cfset this.SessionManagement = true>
<cfset this.SetClientCookies = true>
<cfset this.SessionTimeout = CreateTimeSpan( 0, 0, 5, 0 ) />
<cfset this.loginStorgage = "session">
<cfset this.applicationtoken = 'SampleAppSub'>
Now, I can log into this site on my development machine with multiple browsers pointing to the same site hosted on different servers - with no problem. I never had an issue with this before, but something else I recently added into my code in Application.cfc made this not work. I should probably also mention that I work on many different applications that all use the same application.Name even though they are different sites - we do this so the same settings can be deployed on different servers.
With the applicationToken settings, I have it working again. Perhaps what made it break was setting this.loginStorage = "session"? Before this was not set and was using the default value of "cookies" which I didn't want - because my site is used by different people on the same box and we have clustered servers. -
How to do http session stickiness based on URL patterns?
Is there a feature within the WL plugin for Apache that would allow me to emulate the "jvmroute" session stickiness behaviour as provided by Tomcat and its plugin. I would like to have the control to tie requests from http clients to particular WLS servers in a cluster depending on the URL. For example http://foo.com/web01 requests would be forwarded to an appsererver app01 and so on. For all other requests (e.g http://foo.com/web), the WL plugin would do its normal load balancing ignoring the stickiness. From my understanding the WLS inbuilt http session stickiness is based on JSessionIDs which are exchanged using cookies - which is something i cannot use in my case since i want the stickiness based on URL patterns.
I am using WLS 10.0 with Apache 2.2.4 on Linux.
Thanks
RamdasSession is not replicated across all the servers in the Cluster.
Apache knows which server to go using the JSession ID.
There is a concept of primary and secondary, secondary is selected based on the replication groups there are configured in the cluster.
you can configure the cluster so that /web01 requests go to different cluster, and /web requests go to different cluster.
but you can get all the funtiionalities from the single cluster.
Do you have any java caching that you are not able to replicate across the cluster ?(I know this can be done too).
let me know what you are actually trying to solve by doing the behavior you explained. -
RD Gateway and RD Web Access - better together or on different servers?
I am evaluating Remote Desktop Services with 2012 R2 and initially I had all the roles on 1 server for testing. I began thinking it would be a better setup to split the RD Gateway role and the RD Webaccess role into different servers for security purposes.
This way I could expose only the RD Gateway to the internet and the Web Access role would not be exposed. In all my reading and searching it seems that nearly every article I come upon has both RD Gateway and Web Access installed on the same system.
What is the ideal setup from a security standpoint to have the these two roles separate or does it not mater? If it does not mater then I will setup 1 server with Gateway and Web Access and I will then have other servers for licensing, broker, session
host, and visualization host once I move this into production.
If these roles are on the same system how do I know if the gateway role is doing anything? Is the FQDN\rdweb the correct URL to use even when the gateway is implemented?
If they are separate how do I tell the gateway and web access servers to use each other?Hi,
As far as I know, it’s fine to have RD Gateway and RD Web Access roles installed on the same server.
“Normally external users would log on to RD Web Access via tcp port 443, click on a RemoteApp and connect to RD Gateway via
tcp 443/udp 3391, RDG connects them to RDCB on tcp 3389 which redirects them to a RDSH server, finally the RDG connects to the RDSH on tcp 3389/udp 3389.”
Quoted from TP in this post below:
RD Gateway and RD web issue
https://social.technet.microsoft.com/Forums/windowsserver/en-US/5ab40559-23f7-4ebc-b60d-87375cc55674/rd-gateway-and-rd-web-issue?forum=winserverTS
More links below for you:
RD Gateway deployment in a perimeter network & Firewall rules
http://blogs.msdn.com/b/rds/archive/2009/07/31/rd-gateway-deployment-in-a-perimeter-network-firewall-rules.aspx
Remote Desktop Gateway/Web Server Placement
https://social.technet.microsoft.com/forums/windowsserver/en-US/b2970cf5-a5b5-494c-88b7-cd6e01f84bb6/remote-desktop-gatewayweb-server-placement
Best Regards,
Amy
Please remember to mark the replies as answers if they help and un-mark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected] -
Hi,
I want to monitor all http sessions on the SAP Portal. For this I know two possibilities
- In the Visual Administrator -> Security Provider you can access the login sessions, but these are only the sessions of the authenticated users
- In the NetWeaver Administrator -> System Monitoring, but there you can only see the amount of currenthttpsessions on the different servers
I hope you can tell me where I'm able to see all current http sessions (anonymous and authenticated), and not only the amount.
Bye,
TimoDear Timo,
maybe Actiivty report can help on your case.
http://help.sap.com/saphelp_nw04/helpdata/en/58/728ea01cf64fff996b827f2a06f9b1/content.htm
http://wiki.sdn.sap.com/wiki/display/EP/CreatingaPortalActivityReportIviewformonitoringPageandIview+activities
Please remember to evaluate the replays, this incentive the SDN to keep growing,
regards,
Fabio -
EJBTransactionRolledbackException occurs when load EJB from HTTP session
A stateful session bean that contains user information is stored to HTTP session once a user is successfully logged in. Subsequent requests has to go through a security filter where in the filter it validates if the session contains this stateful session bean. For some reason I get EJBTransactionRolledbackException when I try to call a method from the EJB.
The method is called and User object that contains correct information is returned. However on client side it always throws EJBTransactionRolledbackException. Following is stack trace. Any suggestion or help is much appreciated:
javax.ejb.EJBTransactionRolledbackException
at com.sun.ejb.containers.BaseContainer.mapBusinessInterfaceException(BaseContainer.java:1482)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1396)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:205)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:83)
at $Proxy494.getUser(Unknown Source)
at com.company.comm.server.security.SecurityFilter.validSession(SecurityFilter.java:112)
at com.company.comm.server.security.SecurityFilter.doFilter(SecurityFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:361)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:3394)
at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:3274)
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1244)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:195)
... 32 moreApparently the GlassFish installation (or the environment) has got some problem. Tested the deployment on 4 different GlassFish servers that are installed on different machines and none of them has this problem.
-
HTTPS - HTTP session lost !!
Support
I am cross posting because of possible implications that might arise and users
NEED to be aware of these issues.
Now you are asking me to change the port settings to 80 instead of 7001. I
wonder why Weblogic documentation never gave me a heads up once they knew this
is happening with many a client. If only the SUPPORT had any idea of how many
servlets we have to change ( we did NOT hardcode the portnumber). The servlet
developer was using getServerPort() and using it for redirecting. Hopefully the
future docs would say something on these lines:
If you plan to open up 7001 as WL system port, do it at your own risk. You might
NOT be able to use HTTPS to HTTP chaining (if you will) or vice versa if you go
for any non-standard ports, especially when you dont want to use cookies. ALWAYS
use 443 for SSL.
On the same note, I have one other question, as dumb as it may seem.
Are there any implications that I should be aware of for opening up the HTTP
system port for WL server. How are people dealing with this if they are behind
firewalls, etc? I am looking more for security implications, proxy requests,
etc.
Thanks and you all have a great weekend.
Madhu
[email protected]
404-639-2462
Mark Griffith wrote:
You should be ok if you are using the default ports for the respective
protocols AND you dont include them in the URL. Browsers interpret the
presence of the port as a differentiator in determining what is unique and
not. In otherwords it has to be:
http://localhost/foo
https://localhost/foo
No port.s
mbg
"Madhusudan R Chaganthi" <[email protected]> wrote in message
news:[email protected]...
i am not using cookies.
i am trying to use urlencoding by calling the following code in
the Login page whose url is
https://localhost:"portNumber"/LoginPage
I tried with 7002 and 443 for the portNumber
String encodedNextURL =
res.encodeRedirectURL("http://"+calledServer+"/"+"WelcomePage");
res.sendRedirect(encodedNextURL);
// this encodedNextURL is http://localhost:7001/WelcomePage
Thanks
Madhu
sumanth wrote:
sorry that i did not read ur complete mail.
are u using urlencoding? u are not using cookies or is url encoding
a fall back mechanism when cookies are disabled by the user's browser.
could u send me the complete url's of the loginpage(https) vs welcome
page(http). I will
see if that can help me in answering ur question.
-Sumanth
"Madhusudan R Chaganthi" <[email protected]> wrote in message
news:[email protected]...
Sumanth
I have tried that but it doesnt work. Now it bombs out in IE too.
The reason might be this:
One other person told me that I have to call all my servlets with
"myserver" instead of "localhost".
That takes away flexibility for one and means a lot of change to myexisting
code.
I have read Alexander's idea [17Sept 1999] but I wanted to make sure
his
idea of
persisting session in DBMS is OK.
Any other ideas would be immensely helpful.
Thanks for your response.
Madhu
sumanth wrote:
set the following property
weblogic.httpd.session.cookie.domain=.abc.com
where .abc.com is the domain name of ur site.
U encounter this problem because netscape treats requests coming
from
different
portnumbers as requests coming from two different servers where asIE
treats it
to be the request coming from the same servers....
I have provided detailed explaination in one of earlier posts...butfor
now
setting
the above property in the weblogic.properties file should keep u
going.
-Sumanth
"Madhusudan R Chaganthi" <[email protected]> wrote in message
news:[email protected]...
Addendum to the previous post
The call in the login page is
String
encodedNextURL=loginResponse.encodeRedirectURL("http://myserver.com/WelcomeP
age");
loginResponse.sendRedirect(encodedNextURL);
When IE the encodedNextURL has value
http:...........WelcomePage?TengahSession=blahblahblah
When Netscape the encodedNextURL has value
http:...........WelcomePage
Any reason why this is happening ??
Thanks
Madhu
Madhusudan R Chaganthi wrote:
Hi All
I am using WL 4.5.1 SP11 on NT.
We are using HTTPS (Using Verisign SSL certs) on our login page
and
from
there on everything else runs on HTTP.
For name sake,
LoginPage - HTTPS
Welcome Page - HTTP
Login page calls Welcome page,
the session is set to null when the browser is Netscape
the session is fine when the browser is IE.
Both the browsers are the latest versions.
According to a posting on 17Sept 1999 [sessions between HTTP andHTTPS,
Alexander says we can workaround this using some kind of
persistence.
Does anyone have some kind of doc as to how to do it in detail?
Thanks
Madhu
[att1.html] -
Logical systems assignment when SRM and ECC are on 2 different servers
Hi SRM guru's,
What is the standard practice for Logical system creation and assignment when ECC and SRM are on 2 different servers.
I could not able to find which i created a logical system in SRM server which i created in ECC
Same for the ECC also.
how do i assign logical system of SRM to ECC
vice versa.
your prompt response is appreciated.
RegardsHi Sai,
Logical System Naming/Creation procedure is not dependent on the servers but it is just a logical representation of a system.
As you are trying to name logical systems for ECC & SRM, please follow the below procedure which is usually recommeded by SAP and followed.
Logical System : <SID>CLNT<Client Number>
For Example if you have a client 300 in system DE0 (also called SID), the logical system name will be DE0CLNT300. And it will be same for SRM system.
You can refer the below document which eplains the creation of logical system and RFC destinations etc
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFAALEQS/CABFAALEQS.pdf
Note: Only while configuring the RFC Destination, the servers will play a crucial role.
Regards
Kathirvel
Maybe you are looking for
-
using bootcamp, was installing windows xp, at the select ntfs or fat format mistakenly selected "leave the current file system intact." How can that be changed to a correct choice. Mac side opens correctly. Windows shows disk error. and doesn't respo
-
How can i write the trigger for Global Temporary Table
Hi Grus, How can i write the trigger for Global Temporary Table. I was created the GTT with trigger using the below script . CREATE GLOBAL TEMPORARY TABLE GLOBAL_TEMP EMP_C_NAME VARCHAR2(20 BYTE) ON COMMIT PRESERVE ROWS; CREATE OR REPLACE TRIGGER TRI
-
Integrating SAP UI5 application in Portal through LPD_Cust gives error
Hi Team, In our scenario we are calling sap UI5 application in portal through LPD_Cust . We receive error SAP UI5 mobile is not supported in your browser . When we call same application through portal directly it opens properly( In both cases we are
-
How do I watch movies in Spanish?
Is there a spanish language option on the movies I have purchased through itunes? If yes, how do I access it? If no, how can I buy Spanish language movies?
-
Relaying an internal PHP application by Exchange 2013
Hello, dear Fellows, We use an Exchange 2013 server to relay two web applications via a Front-End Transport Receive Connector, properly configured. All messages sent by the ASP Web Application, are received by all the recipient domains. But somes mes