argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: Проблем с EJB 3  (Прочетена 1555 пъти)

Veselin Marinov

  • Неактивен Неактивен
  • Публикации: 16
Проблем с EJB 3
« -: 24.11.2008, 09:32:04 »

Здравейте!
Имам един проблем с EJB 3, не мога да открия къде ми е грешката. Непрекъснато ми дава “Name is not bound in this Context”. За сървър използвам JBoss 4.2.3.GA. Направил съм от EJB модула един EJB jar файл и съм го диплойнал на JBoss сървъра. Ето и съобщението, което ми дава, за потвърждение на думите ми:

STARTED EJB: com.veselinmarinov.elearning.dao.LoginBean ejbName: LoginBean
Deployed: file:C:/jboss-4.2.3.GA/server/default/deploy/eLearningEJB.jar

Ето и ejb-jar.xml файла:

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
   version="3.0">
   <display-name>eLearningEJB</display-name>
   <enterprise-beans>
      <session>
         <ejb-name>LoginBean</ejb-name>
         <mapped-name>LoginBean</mapped-name>
         <ejb-class>com.veselinmarinov.elearning.dao.LoginBean</ejb-class>
         <session-type>Stateless</session-type>
      </session>
   </enterprise-beans>
</ejb-jar>

В клиентския модул съм поствавил следния jndi.properties файл в папката src:

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

И сега вече извиквам отдалечения метод:

LoginBeanRemote loginBean = null;
      try {
         Context context = new InitialContext();
         loginBean = (LoginBeanRemote) context.lookup("LoginBean/remote");
      } catch (NamingException e) {
         e.printStackTrace();
      }
      if (loginBean.findUser(username, password) == null) {
         forwardName = "failure";
      } else {
         forwardName = "success";
      }

Ето и каква грешка ми дава на реда, който съм удебелил:

javax.naming.NameNotFoundException: Name LoginBean is not bound in this Context
   at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
   at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
   at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
   at javax.naming.InitialContext.lookup(Unknown Source)
   at com.veselinmarinov.elearning.web.LoginAction.execute(LoginAction.java:33)
   at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
   at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
   at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Unknown Source)
2008-11-24 9:15:54 org.apache.struts.chain.commands.AbstractExceptionHandler execute
WARNING: Unhandled exception
java.lang.NullPointerException
   at com.veselinmarinov.elearning.web.LoginAction.execute(LoginAction.java:37)
   at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
   at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
   at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Unknown Source)
2008-11-24 9:15:54 org.apache.struts.chain.commands.ExceptionCatcher postprocess
WARNING: Exception from exceptionCommand 'servlet-exception'
java.lang.NullPointerException
   at com.veselinmarinov.elearning.web.LoginAction.execute(LoginAction.java:37)
   at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
   at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
   at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Unknown Source)
2008-11-24 9:15:56 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
   at com.veselinmarinov.elearning.web.LoginAction.execute(LoginAction.java:37)
   at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
   at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
   at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
   at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
   at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Unknown Source)

Какво да правя? За първи път се занимавам с EJB (EJB3) и сигурно пропускам нещо, но не мога да разбера какво. Затова ви моля за помощ!
Активен

antoniy

  • Управител
  • *
  • Неактивен Неактивен
  • Публикации: 723
    • http://antoniy.net/
Re: Проблем с EJB 3
« Отговор #1 -: 24.11.2008, 12:59:03 »

Имаш ли @Remote интерфейс към bean-а направен? А ползваш ли анотации за описание на bean-а или описваш в xml директно. Ако не - ползвай. Все пай е ejb3, а не ejb2. :)
Активен
Too short signature limits.

Veselin Marinov

  • Неактивен Неактивен
  • Публикации: 16
Re: Проблем с EJB 3
« Отговор #2 -: 24.11.2008, 12:59:11 »

Забравих да спомена, че съм копирал remote интерфейса и на клиентския модул. Открих и една грешка: когато използвам remote интерфейса, трябва да използвам и метода PortableRemoteObject.narrow(obj), но пак получавам същата грешка на същия ред. :cry:
« Последна редакция: 24.11.2008, 13:02:08 от Veselin Marinov »
Активен

Veselin Marinov

  • Неактивен Неактивен
  • Публикации: 16
Re: Проблем с EJB 3
« Отговор #3 -: 24.11.2008, 12:59:59 »

Имаш ли @Remote интерфейс към bean-а направен? А ползваш ли анотации за описание на bean-а или описваш в xml директно. Ако не - ползвай. Все пай е ejb3, а не ejb2. :)
Да, разбира се, че използвам. Всичко съм описал и пак не  става. :-(
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Проблем с EJB 3
« Отговор #4 -: 24.11.2008, 13:30:11 »

pasteni EJB-to
отвори на JBoss JNDI View-to води се JNDI Tree и пастени там онази част за твоя контекст
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die
Re: Проблем с EJB 3
« Отговор #5 -: 25.11.2008, 14:54:45 »

Разбрах че си си решил вече проблема :) pasteni на тия дето са се чудили :Д ако има такива да знаят и те какъв е бил проблема
Активен

Veselin Marinov

  • Неактивен Неактивен
  • Публикации: 16
Re: Проблем с EJB 3
« Отговор #6 -: 30.11.2008, 17:03:08 »

Разбрах че си си решил вече проблема :) pasteni на тия дето са се чудили :Д ако има такива да знаят и те какъв е бил проблема
Съжалявам много. Ами проблемът беше, че файлът jndi.properties някакси не ми го разчиташе, въпреки че го бях сложил на правилното място - в папката src. Затова си направих нов клас със статичен метод, който да ми връща java.util.Properties и оттам си конфигурирам контекста и хоста за JBoss.
Активен