Bugs item #547128, was opened at 2002-04-22 08:33
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=376685&aid=547128&group_id=22866
Category: CatalinaBundle
Group: v2.4 (stable)
Status: Closed
Resolution: Fixed
Priority: 5
Submitted By: Erik Konijnenburg (konijnenburg)
Assigned to: Scott M Stark (starksm)
Summary: sessioncontext not set when calling
Initial Comment:
I have written a simple session bean which echos a
string. I access this bean via the web.
I can secure this bean using when i access it from a
servlet.
When I access it from a JSP the session context is not
set. I tried this with the JBOSS catalina bundle:
JBoss-2.4.4_Tomcat-4.0.1
JSP file
--------
<html>
<head>
<title>
echo
</title>
</head>
<jsp:useBean id="bean1" scope="session"
class="echo.EchoBean" />
<jsp:setProperty name="bean1" property="echo" value
= "Hello Erik" />
<body>
<h1>
JBuilder Generated JSP
</h1>
</body>
<%= bean1.getEcho() %>
</html>
Bean
----
package echo;
import java.rmi.*;
import javax.ejb.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
public class EchoBean implements SessionBean {
private SessionContext sessionContext;
String echo;
public void ejbCreate() {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext(SessionContext
sessionContext) {
System.out.println("Setting Session context");
this.sessionContext = sessionContext;
}
public void setEcho(String echo) {
this.echo = echo;
System.out.println("setEcho(String echo);");
}
public String getEcho() {
System.out.println("getEcho();");
return echo + " " +
sessionContext.getCallerPrincipal().getName();
}
}
web.xml
-------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>echoit</servlet-name>
<jsp-file>/echo.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>echoit</servlet-name>
<url-pattern>/restricted/echoit</url-pattern>
</servlet-mapping>
<security-constraint>
<display-name>Customer</display-name>
<web-resource-collection>
<web-resource-name>Collection1</web-resource-
name>
<url-pattern>/restricted/*</url-pattern>
<url-pattern>/echo.jsp</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Customer</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/logon.jsp</form-login-page>
<form-error-page>/logon_failed.jsp</form-error-
page>
</form-login-config>
</login-config>
<security-role>
<role-name>Customer</role-name>
</security-role>
<ejb-ref>
<ejb-ref-name>EJB/Echo</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>echo.EchoHome</home>
<remote>echo.Echo</remote>
</ejb-ref>
</web-app>
ejb-jar.xml
-----------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems,
Inc.//DTD Enterprise JavaBeans
1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-
jar_1_1.dtd">
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Echo</ejb-name>
<home>echo.EchoHome</home>
<remote>echo.Echo</remote>
<ejb-class>echo.EchoBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-
type>
</session>
</enterprise-beans>
<assembly-descriptor>
<security-role>
<role-name>Customer</role-name>
</security-role>
<method-permission>
<role-name>Customer</role-name>
<method>
<description />
<ejb-name>Echo</ejb-name>
<method-name>*</method-name>
</method>
</method-permission>
</assembly-descriptor>
</ejb-jar>
jboss.xml
---------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC '-//JBoss//DTD JBOSS
2.4//EN' 'http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd'>
<jboss>
<security-domain>java:/jaas/default</security-
domain>
<enterprise-beans>
<session>
<ejb-name>Echo</ejb-name>
<jndi-name>Echo</jndi-name>
</session>
</enterprise-beans>
</jboss>
jboss-web.xml
-------------
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>java:/jaas/default</security-
domain>
<ejb-ref>
<ejb-ref-name>EJB/Echo</ejb-ref-name>
<jndi-name>Echo</jndi-name>
</ejb-ref>
</jboss-web>
----------------------------------------------------------------------
>Comment By: Scott M Stark (starksm)
Date: 2002-04-28 10:16
Message:
Logged In: YES
user_id=175228
The cookies flag belongs in the tomcat4-service.xml
descriptor, not your web.xml descriptor. See the latest
2.4.5RC3 release.
----------------------------------------------------------------------
Comment By: Erik Konijnenburg (konijnenburg)
Date: 2002-04-28 04:37
Message:
Logged In: YES
user_id=522939
I added the following to web.xml:
<context-param>
<param-name>cookies</param-name>
<param-value>true</param-value>
</context-param>
Still the sessioncontext of the EJB is null when called from
the JSP. When calling from a Servlet it works.
I get the following exception
java.lang.NullPointerException
at echo.EchoBean.getEcho(EchoBean.java:30)
at org.apache.jsp.echo$jsp._jspService
(echo$jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service
(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service
(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.servi
ce(JspServlet.java:202)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile
(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service
(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service
(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:201)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:518)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
at
org.apache.catalina.valves.CertificatesValve.invoke
(CertificatesValve.java:246)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2344)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:164)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
at
org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:943)
at
org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:163)
at
org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:943)
at
org.apache.catalina.connector.http.HttpProcessor.process
(HttpProcessor.java:1011)
at
org.apache.catalina.connector.http.HttpProcessor.run
(HttpProcessor.java:1106)
at java.lang.Thread.run(Unknown Source)
----------------------------------------------------------------------
Comment By: Scott M Stark (starksm)
Date: 2002-04-27 15:09
Message:
Logged In: YES
user_id=175228
Set the DefaultContext cookies attribute to true to enable
sessions based on cookies. This is now the default.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=376685&aid=547128&group_id=22866
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development