Hello, I have a servlet that works and displays everything. He's about

@WebServlet("/test") public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter writer = resp.getWriter(); writer.print("hello world"); writer.close(); } } 

I follow the link: http: // localhost: 8080 / test and see hello world


In another package, I created this Ejb:

 import javax.ejb.*; @Stateless public class HelloWorldBean { public String sayHello() { return "hello"; } } 

I am changing the servlet code, doing it like this:

 import javax.ejb.*; @WebServlet("/test") public class MyServlet extends HttpServlet { @EJB HelloWorldBean worldBean; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter writer = resp.getWriter(); writer.print( worldBean.sayHello()); writer.close(); } } 

I switch to http: // localhost: 8080 / test and have the following:

 Exception javax.servlet.ServletException: Error instantiating servlet class ru.company.MyServlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) Root Cause javax.naming.NameNotFoundException: Name [ru.company.MyServlet/worldBean] is not bound in this Context. Unable to find [ru.company.MyServlet]. org.apache.naming.NamingContext.lookup(NamingContext.java:816) org.apache.naming.NamingContext.lookup(NamingContext.java:173) org.jboss.weld.environment.tomcat.ForwardingInstanceManager.newInstance(ForwardingInstanceManager.java:26) org.jboss.weld.environment.tomcat.WeldForwardingInstanceManager.newInstance(WeldForwardingInstanceManager.java:71) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) 

Help, why such an error comes out?

  • Do you use tomcat? - Sergey Gornostaev
  • yes, and use tomcat - fantastic
  • It does not support EJB. - Sergey Gornostaev
  • Aah, I get it ... Something didn't think about it. If you do in the form of an answer, you can close the question) - fantastic

1 answer 1

Tomcat does not support EJB. Use any application server - Glassfish, Wildfly, etc. If you don't want to go far from the familiar platform, you can try TomEE.