Hi all, I am a new bie in JBoss world. I am trying to run a small application which prints
current time .
I am trying to do this work using EJB 2.0 and JSP.
I created a jar file which is having EJB class files as well as ejb deployment
descriptors, JBoss required DDs. (i.e., ejb-jar.xml and jboss.xml)
Then I made a jsp page which contains a JNDI call from that to access the EJB Home
interface (normal EJB client call).With this I prepared a war file with all the required
DD files (web.xml etc).
Now I prepared a ear file with jar file and war file , application.xml file and trying to
deploy the application in JBoss. Once it was deployed in the server (deploying properly
with out throwing any error), and trying to call the jsp page from browser
http://localhost:8080/test/firstEJB.jsp
it is throwing error at the browser as
-----------------------------------------------------------------------------
org.apache.jasper.JasperException: An exception occurred processing JSP page /firstEJB.jsp
at line 14
11: props.put(Context.PROVIDER_URL, "localhost:1099");
12:
13: Context ctx = new InitialContext(props);
14: FirstHome home = (FirstHome)ctx.lookup("ejb/First");
15: First bean = home.create();
16: String time = bean.getTime();
17: bean.remove();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:518)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
javax.servlet.ServletException: java.lang.LinkageError: loader constraints violated when
linking javax/ejb/Handle class
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.firstEJB_jsp._jspService(firstEJB_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:387)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
java.lang.LinkageError: loader constraints violated when linking javax/ejb/Handle class
java.lang.Class.getDeclaredFields0(Native Method)
java.lang.Class.privateGetDeclaredFields(Class.java:2232)
java.lang.Class.getDeclaredField(Class.java:1852)
java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1555)
java.io.ObjectStreamClass.access$600(ObjectStreamClass.java:47)
java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:381)
java.security.AccessController.doPrivileged(Native Method)
java.io.ObjectStreamClass.(ObjectStreamClass.java:373)
java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
java.io.ObjectStreamClass.initProxy(ObjectStreamClass.java:464)
java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1502)
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
java.rmi.MarshalledObject.get(MarshalledObject.java:135)
org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
javax.naming.InitialContext.lookup(InitialContext.java:351)
org.apache.jsp.firstEJB_jsp._jspService(firstEJB_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:387)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
-----------------------------------------------------------------------------------
my EJBHOme is
------------------
package com.stardeveloper.ejb.session;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
// Referenced classes of package com.stardeveloper.ejb.session:
// First
public interface FirstHome
extends EJBHome
{
public abstract First create()
throws CreateException, RemoteException;
}
------------------------------------------------------------
my Remote Interface is
package com.stardeveloper.ejb.session;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface First
extends EJBObject
{
public abstract String getTime()
throws RemoteException;
}
--------------------------------------------------------
my EJB Sesion Bean is
package com.stardeveloper.ejb.session;
import java.util.Date;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class FirstEJB
implements SessionBean
{
public FirstEJB()
{
}
public String getTime()
{
return "Time is : " + (new Date()).toString();
}
public void ejbCreate()
{
}
public void ejbPassivate()
{
}
public void ejbActivate()
{
}
public void ejbRemove()
{
}
public void setSessionContext(SessionContext sessioncontext)
{
}
}
-------------------------------------------------
My JSP page which is trying to access the EJB is
<%@ page import="javax.naming.InitialContext,
javax.naming.Context,
java.util.Properties,
com.stardeveloper.ejb.session.First,
com.stardeveloper.ejb.session.FirstHome"%>
<%
long t1 = System.currentTimeMillis();
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
props.put(Context.PROVIDER_URL, "localhost:1099");
Context ctx = new InitialContext(props);
FirstHome home = (FirstHome)ctx.lookup("ejb/First");
First bean = home.create();
String time = bean.getTime();
bean.remove();
ctx.close();
long t2 = System.currentTimeMillis();
%>
p { font-family:Verdana;font-size:12px; }
Message received from bean = "<%= time %>".Time taken :
<%= (t2 - t1) %> ms.
---------------------------------
my ejb-jar.xml is
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans
2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar>
<enterprise-beans>
<display-name>FirstEJB</display-name>
<ejb-name>First</ejb-name>
com.stardeveloper.ejb.session.FirstHome
com.stardeveloper.ejb.session.First
<ejb-class>com.stardeveloper.ejb.session.FirstEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<ejb-name>First</ejb-name>
<method-name>*</method-name>
<trans-attribute>Supports</trans-attribute>
</container-transaction>
<security-role>
Users
<role-name>users</role-name>
</security-role>
</assembly-descriptor>
</ejb-jar>
----------------------------------------
my jboss.xml is
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS//EN"
"http://www.jboss.org/j2ee/dtd/jboss.dtd">
<enterprise-beans>
<ejb-name>First</ejb-name>
<jndi-name>ejb/First</jndi-name>
</enterprise-beans>
--------------------------------------
One of the solution for this would be , if I put the EJB jar file (the jar file which is
having all the ejb classes as well as deployment descriptors inside that ) inside the war
file WEB-INF\lib folder. Then it is working fine , showing the page at the browser.
Suppose if it is a very big application and I can't put that at war\WEB-INF\lib
folder. This is not the way to put.
SO any body please put some light on this...What I need to do to work with out putting my
ejb jar file inside the war file.
Thanks!
vvk
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4087368#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...