Error accessing EJB within Servlet
one_special_user Aug 3, 2006 10:54 AMError accessing EJB within Servlet
Hello, I've created an IIOP Stateless SessionBean bound to "vfmcontroller/VFMController", which i can access from
my C#-Client (via IIOP.Net), all works fine and JBoss doesn't list any error during startup.
But if I want to access the SessionBean from within a Servlet, I get an Error.
I do not include the EJB - JARFile where my SessionBean resides (have read that this might cause errors due to ClassLoaders)
Servlet-Code:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
Context ctx = new InitialContext();
Object obj_ref = ctx.lookup( "vfmcontroller/VFMController" );
VFMControllerHome home = (VFMControllerHome)PortableRemoteObject.narrow( obj_ref, VFMControllerHome.class );
VFMController controller = home.create();
String time = controller.getTime();
out.println( "TIME = " + time );
} catch (Throwable error) {
error.printStackTrace( out );
}
out.close();
}And this is the Error I caught and print out to the Browser:
ERROR: java.lang.Error: POA: not configured! at org.jacorb.poa.POA._getChildPOA(POA.java:314) at org.jacorb.orb.ORB.findPOA(ORB.java:494) at org.jacorb.orb.Delegate.resolvePOA(Delegate.java:781) at org.jacorb.orb.Delegate.is_really_local(Delegate.java:1326) at org.jacorb.orb.Delegate.is_a(Delegate.java:1177) at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112) at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:218) at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137) at org.jboss.proxy.ejb.IIOPHomeFactory.getObjectInstance(IIOPHomeFactory.java:70) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1125) at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1142) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:705) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587) at javax.naming.InitialContext.lookup(InitialContext.java:351) at servlet.Test.processRequest(Test.java:27) at servlet.Test.doGet(Test.java:57) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595)
And JBoss' Logging tells me the following:
16:19:51,384 INFO [Server] JBoss (MX MicroKernel) [4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 40s:488ms // // COMMENT: JBoss started without any Error-Messages, // but as soon as I first access the Servlet, // I get the following Log-Output: // 16:19:54,919 WARN [listener] Address already in use: JVM_Bind 16:19:54,919 WARN [ORBFactory] Unable to activate POA org.omg.CORBA.INITIALIZE: Could not create server socket vmcid: 0x0 minor code: 0 completed: No at org.jacorb.orb.iiop.IIOPListener$Acceptor.createServerSocket(IIOPListener.java:466) at org.jacorb.orb.iiop.IIOPListener$Acceptor.init(IIOPListener.java:378) at org.jacorb.orb.iiop.IIOPListener.configure(IIOPListener.java:166) at org.jacorb.orb.etf.FactoriesBase.create_listener(FactoriesBase.java:101) at org.jacorb.orb.BasicAdapter.configure(BasicAdapter.java:147) at org.jacorb.orb.ORB.getRootPOA(ORB.java:885) at org.jacorb.orb.ORB.resolve_initial_references(ORB.java:1167) at org.jboss.corba.ORBFactory.getORB(ORBFactory.java:82) at org.jboss.iiop.CorbaORB.getInstance(CorbaORB.java:87) at org.jboss.proxy.ejb.IIOPHomeFactory.getObjectInstance(IIOPHomeFactory.java:69) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1125) at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1142) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:705) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587) at javax.naming.InitialContext.lookup(InitialContext.java:351) at servlet.Test.processRequest(Test.java:27) at servlet.Test.doGet(Test.java:57) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595)
I've been tracking down the Sources for at org.jacorb.orb.iiop.IIOPListener.createServerSocket()
and found out that this Method in turn calls private int getConfiguredPort(), which returns oaport
being initially set by the Property "OAPort".
The "Address already in use: JVM_Bind" brought me to the idea of changing this Property in jacorb.properties,
but nothing happened.
The Log-Output "Unable to activate POA" form ORBFactory is thrown when it tires to retrieve
the initial reference:
public static ORB getORB()
{
synchronized (ORBFactory.class)
{
if (orb == null)
{
Properties properties;
try
{
properties = (Properties) AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
return System.getProperties();
}
});
}
catch (SecurityException ignored)
{
log.trace("Unable to retrieve system properties", ignored);
properties = null;
}
// Create the singleton ORB
orb = ORB.init(new String[0], properties);
// Activate the root POA
try
{
POA rootPOA = (POA) orb.resolve_initial_references("RootPOA");
rootPOA.the_POAManager().activate();
}
catch (Throwable t)
{
///////////////////////
// HERE WE ARE ..
///////////////////////
log.warn("Unable to activate POA", t);
}
}
return orb;
}
}JBoss 4.0.4 GA
Java 1.5.0
Windows XP SP2
On a similar Problem I've read that JBoss might have problems if not being connected to a network
(Clustering etc.), but I do have a network connection.
Any Ideas what's going on!?
Have no clue how this problem arises and can be fixed :-/