[jboss-user] [EJB 3.0] - Problem running Stateless bean with JBOSS 4.0.4 GA and EJB 3

neisann do-not-reply at jboss.com
Tue May 8 14:41:44 EDT 2007


Hi there,

I?m trying to run na EJB application developed with JBOSS IDE 2.0 and JBOSS 4.0.4 GA. I have an remote stateless session bean named TestStatelessBean that inherit from  TestStateless. Here is the code for them:

package com.test.ejbs;

import javax.ejb.Remote;

@Remote
public interface TestStateless {
	public String testBean();
}

----------------------------------------------------------------------------
package com.test.ejbs;

import javax.ejb.*;
import com.test.ejbs.TestStateless;

public @Stateless class TestStatelessBean implements TestStateless {

	public String testBean() {
		return "the server returned this string";
	}

}
------------------------------------------------------------------------------

I have a servlet that calls the EJB:

package com.test.web;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import java.io.*;

import com.test.ejbs.*;

public class TestStatelessEJBServlet extends HttpServlet {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private TestStatelessBean statelessBean;
	
	public void init() {
		try {
			Context context = new InitialContext();
			System.out.println("Before lookup");
//			statelessBean = (TestStatelessBean) context.lookup("TestStatelessBean/remote");
			statelessBean = (TestStatelessBean) context.lookup(TestStatelessBean.class.getName());			
			System.out.println("After lookup");
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		PrintWriter writer = resp.getWriter();
		writer.write("The stateless bean returned this string: " + 
				     statelessBean.testBean());
	}
	
	public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		this.doGet(req, resp);
	}
}

--------------------------------------------------------------------

If I try to get the bean with the code ?statelessBean = (TestStatelessBean) context.lookup("TestStatelessBean/remote");? I get a class cast exception.

If try to get the bean with the code ?statelessBean = (TestStatelessBean) context.lookup(TestStatelessBean.class.getName());? I get a Bean not bound exception.

I deployed my bean with the JBOSS IDE in the files TestInstallation.ejb3 and TetsInstallation.war. My project name is ejb3teste.  These two files are in $JBOSS_HOME\server\default\deploy. The content of jndi.properties is:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099

The web.xml file contains:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
		<servlet-name>TestStatelessEJBServlet</servlet-name>
		<servlet-class>com.test.web.TestStatelessEJBServlet</servlet-class>
	
	<servlet-mapping>
		<servlet-name>TestStatelessEJBServlet</servlet-name>
		<url-pattern>/testStatelessEJB</url-pattern>
	</servlet-mapping>
</web-app>

The content of the file packaging-buid.xml is:

?xml version="1.0" encoding="UTF-8"?
project name="Packaging Generator" "default="_packaging_generation_"
target name="_packaging_generation_" depends="N65540,N65565"
target name="N65540" description="TestInstallation.ejb3"
jar destfile="TestInstallation.ejb3"
zipfileset dir="src"
include name="jndi.properties"
zipfileset
zipfileset dir="bin" includes="**/ejbs/*"
jar
target
target name="N65565" description="TestInstallation.war
jar destfile="TestInstallation.war"
zipfileset dir="src" prefix="WEB-INF"
include name="web.xml"
zipfileset
zipfileset dir="bin" prefix="WEB-INF/classes" includes="**/web/*"
jar
target
project

In the jmx-console I have:

jboss.j2ee

    * jar=TestInstallation.ejb3,name=TestStatelessBean,service=EJB3
    * module=TestInstallation.ejb3,service=EJB3
    * service=ClientDeployer
    * service=EARDeployer

jboss.web

* J2EEApplication=none,J2EEServer=none,WebModule=//localhost/TestInstallation,j2eeType=Servlet,name=TestStatelessEJBServlet

----------------------------------------------------------

The JNDI Namespace

Global JNDI Namespace

  +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
  +- TestStatelessBean (class: org.jnp.interfaces.NamingContext)
  |   +- remote (proxy: $Proxy58 implements interface com.test.ejbs.TestStateless,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBObject)

----------------------------------------------------------------------

I?m calling the servlet with the command line ?http://mymachine:8080/TestInstallation/testStatelessEJB?. I have to use this URL because the URL ?http://localhost:8080/TestInstallation/testStatelessEJB? doesn?t work. Do you think this can be the cause of the error?

Thank you very much.

Nei

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044025#4044025

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044025



More information about the jboss-user mailing list