Bugs item #547128, was opened at 2002-04-22 15: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: Erik Konijnenburg (konijnenburg)
Date: 2002-04-28 11: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 22: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

Reply via email to