[jboss-user] [EJB 3.0] - EJB3.0 example with session bean and servlet
chris.gr
do-not-reply at jboss.com
Thu Oct 9 18:08:04 EDT 2008
Hello, I am using Netbeans 6.1 and JBoss 5.0.0.CR2.
I am trying out an example with a stateless session bean and servlet, but have some problems.
The error message:
HTTP Status 404 - Servlet QuatronServlet is not available
---------------------------------------------------------------------------------
The console output:
*** CONTEXTS IN ERROR: Name -> Error
<UNKNOWN jboss.j2ee:ear=Hydron.ear,jar=HydronEJB.jar,name=HydronEJB,service=EJB3> -> ** UNRESOLVED Demands 'jboss.ejb:service=EJBTimerService' **
jboss.jdbc:datasource=DefaultDS,service=metadata -> ** NOT FOUND Depends on 'jboss.jdbc:datasource=DefaultDS,service=metadata' **
<UNKNOWN jboss.j2ee:ear=Quatron-ejb.jar,jar=Quatron-ejb.jar,name=QuatronEJBBean,service=EJB3> -> ** UNRESOLVED Demands 'jboss.ejb:service=EJBTimerService' **
<UNKNOWN jboss.j2ee:ear=Quatron.ear,jar=Quatron-ejb.jar,name=QuatronEJBBean,service=EJB3> -> ** UNRESOLVED Demands 'jboss.ejb:service=EJBTimerService' **
jboss.jca:name=DefaultDS,service=DataSourceBinding -> ** NOT FOUND Depends on 'jboss.jca:name=DefaultDS,service=DataSourceBinding' **
at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:709)
at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:661)
at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:291)
at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:221)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
23:52:20,579 INFO [[/Quatron]] Marking servlet QuatronServlet as unavailable
23:52:20,579 ERROR [[QuatronServlet]] Allocate exception for servlet QuatronServlet
javax.naming.NameNotFoundException: Quatron not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:564)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:572)
at org.jnp.server.NamingServer.getObject(NamingServer.java:578)
at org.jnp.server.NamingServer.lookup(NamingServer.java:288)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:669)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:629)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1251)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:760)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:629)
at org.jboss.ejb3.JndiUtil.lookup(JndiUtil.java:44)
at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:75)
at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
at org.jboss.web.tomcat.service.TomcatInjectionContainer.processInjectors(TomcatInjectionContainer.java:361)
at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:244)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1006)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:777)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:189)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:91)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:92)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:325)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
23:52:26,849 INFO [[QuatronServlet]] Servlet QuatronServlet is currently unavailable
Here is the code:
----------------------------------------------------------------------------------
Application.xml
<?xml version="1.0" encoding="UTF-8"?>
<display-name>Quatron</display-name>
<web-uri>Quatron-war.war</web-uri>
<context-root>/Quatron</context-root>
Quatron-ejb.jar
----------------------------------------------------------------------------------
jboss-app.xml
<jboss-app>
<loader-repository>
quatron:archive=quatron.ear
</loader-repository>
</jboss-app>
----------------------------------------------------------------------------------
QuatronEJBBean.java
package session;
import javax.ejb.Stateless;
@Stateless
public class QuatronEJBBean implements QuatronEJBLocal {
public String getText() {
return "test";
}
}
----------------------------------------------------------------------------------
QuatronEJBLocal.java
package session;
import javax.ejb.Local;
@Local
public interface QuatronEJBLocal {
String getText();
}
----------------------------------------------------------------------------------
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet-name>QuatronServlet</servlet-name>
<servlet-class>servlet.QuatronServlet</servlet-class>
<servlet-mapping>
<servlet-name>QuatronServlet</servlet-name>
<url-pattern>/QuatronServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<ejb-local-ref>
<ejb-ref-name>ejb/QuatronEJBBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
session.QuatronEJBLocal
</ejb-local-ref>
</web-app>
----------------------------------------------------------------------------------
jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain flushOnSessionInvalidation="false"/>
<context-root>/Quatron</context-root>
<ejb-local-ref>
<ejb-ref-name>ejb/QuatronEJBBean</ejb-ref-name>
session.QuatronEJBBean
<local-jndi-name>Quatron/QuatronEJBBean/local</local-jndi-name>
</ejb-local-ref>
</jboss-web>
----------------------------------------------------------------------------------
QuatronServlet.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import session.QuatronEJBLocal;
/**
*
* @author gruen
*/
public class QuatronServlet extends HttpServlet {
@EJB
private QuatronEJBLocal quatron;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("Test" + quatron.getText());
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
Thanks a lot for any answers! By the way, when should I use <ejb-link> and when just ?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4181342#4181342
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4181342
More information about the jboss-user
mailing list