Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > доступ к ejb из tomcat 5.5


Автор: sanches_ru 23.12.2007, 13:34
Добрый день .... 
Проблема заключается в следующем на сервере jboss 4.0.4 разместил ejb, все нормально продеплоилось ....
Код

......
[EjbModule] Deploying FolderSessionBean
13:00:48,671 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'AnswerBean' to jndi 'indi/AnswerBean'
13:00:48,687 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'DistrnameBean' to jndi 'indi/DistrnameBean'
13:00:48,703 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'BoonBean' to jndi 'indi/BoonBean'
13:00:48,718 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'DistrsubjectBean' to jndi 'indi/DistrsubjectBean'
13:00:48,750 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'DocumentationBean' to jndi 'indi/DocumentationBean'
13:00:49,062 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'FormdivisionBean' to jndi 'indi/FormdivisionBean'
13:00:49,109 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'HrefBean' to jndi 'indi/HrefBean'
13:00:49,125 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'IntelligenceBean' to jndi 'indi/IntelligenceBean'
13:00:49,140 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'MessageBean' to jndi 'indi/MessageBean'
13:00:49,140 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'IntelligencechapterBean' to jndi 'indi/IntelligencechapterBean'
13:00:49,593 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'NewsBean' to jndi 'indi/NewsBean'
13:00:49,609 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'PravatemessageBean' to jndi 'indi/PravatemessageBean'
13:00:49,625 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'TipseBean' to jndi 'indi/TipseBean'
13:00:49,640 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'UsersBean' to jndi 'indi/UsersBean'
13:00:49,671 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'FolderSessionBean' to jndi 'indi/FolderSessionBean'
13:00:50,109 INFO  [ProxyFactory] Bound EJB Home 'FolderSessionBean' to jndi 'FolderSessionBean'
.........
 

Теперь из сервелета который исполняется на tomcate пытаюсь получить доступ к этому ejb 
Код

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.rmi.*;
import javax.ejb.*;

public class Servlet1 extends HttpServlet {
    private static final String CONTENT_TYPE =
            "text/html; charset=windows-1251";

    //Initialize global variables
    public void init() throws ServletException {
    }

    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        Properties pr = new Properties();
        pr.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        pr.put(Context.PROVIDER_URL,"jnp://localhost:1099");
        try {
            // FolderSessionRemoteHome folderHome;
           Object result = null;
           Context init =(Context) new InitialContext(pr);
  
           Object obj = (Object)init.lookup("FolderSessionBean");
        //   result = PortableRemoteObject.narrow(obj,FolderSessionRemoteHome.class);
        //   folderHome = (FolderSessionRemoteHome)result;


        } catch (NamingException ex) {
            ex.printStackTrace();
        }
   }

    //Clean up resources
    public void destroy() {
    }
}


в итоге он мне пишет ....
Код

INFO: Server startup in 2859 ms
javax.naming.NameNotFoundException: Name FolderSessionBean is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:769)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)
    at sessionbean.Servlet1.doGet(Servlet1.java:37)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    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.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:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)


Я думаю он просто не видит это JNDI имя просто не видит....!

Хотя если сделать обычный класс и запустить его через main то все прекрасно работает .....

Подскажите в чем может проблема ..... ? smile

Автор: tux 23.12.2007, 13:44
Насколько я вижу, FolderSessionBean поклался в узел 'indi/FolderSessionBean'. Почему тогда в сервлете поиск по 'FolderSessionBean' выполняется?

Автор: sanches_ru 23.12.2007, 13:58
'indi/FolderSessionBean' - это имя локального интерфейса (javax.ejb.EJBLocalHome) через него можно осуществить доступ только в пределах контейнера....... !!! 

а для обращения из других серверов  нужен не локальный, а домашний(avax.ejb.EJBHome) интерфейс... и имя его 'FolderSessionBean'!!!!
и обрушатся надо именно через него ....



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)