powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема подключения удалённого EJB в сервлете
15 сообщений из 15, страница 1 из 1
Проблема подключения удалённого EJB в сервлете
    #38779691
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Не удаётся подключиться из сервлета к удалённой Ejb, при этом из JavaApp подключается нормально.
Код: java
1.
2.
3.
4.
5.
6.
	           Properties prop=new Properties();
	           prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
	           prop.put("java.naming.provider.url", "ejbd://localhost:4201");
	           InitialContext context = new InitialContext(prop);
	           
	           IRemoteRequestData myejb = (IRemoteRequestData)context.lookup("StatelessSessionRequestDataRemote");



В логах сервера
автор[startup] Jndi(name=StatelessSessionRequestDataRemote) --> Ejb(deployment-id=myEJB.jar/StatelessSessionRequestData)
[startup] Jndi(name=global/myEAR/myEJB/StatelessSessionRequestData!myEjb_ear.IRemoteRequestData) --> Ejb(deployment-id=myEJB.jar/StatelessSessionRequestData)


Сервер Geronimo 3
Заранее спасибо!
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38779695
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mytoffnaxНе удаётся подключиться из сервлета к удалённой Ejb
На каком шаге падает-то?
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38779702
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
IRemoteRequestData myejb = (IRemoteRequestData)context.lookup("StatelessSessionRequestDataRemote");



Коды ошибки:
javax.naming.NamingException: Cannot lookup '/StatelessSessionRequestDataRemote'. [Root exception is java.rmi.RemoteException: Cannot read the response from the server. The class for an object being returned is not located in this system:; nested exception is:
java.lang.ClassNotFoundException: ptk_spu_ear.IRemoteRequestData]
at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:226)
at org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:161)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at ru.mytoffnax.PersonAction.execute(PersonAction.java:47)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:731)
at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:48)
at org.apache.geronimo.tomcat.valve.ProtectedTargetValve.invoke(ProtectedTargetValve.java:53)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:267)
at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:397)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.rmi.RemoteException: Cannot read the response from the server. The class for an object being returned is not located in this system:; nested exception is:
java.lang.ClassNotFoundException: ptk_spu_ear.IRemoteRequestData
at org.apache.openejb.client.Client.processRequest(Client.java:271)
at org.apache.openejb.client.Client.request(Client.java:71)
at org.apache.openejb.client.JNDIContext.request(JNDIContext.java:82)
at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:220)
... 29 more
Caused by: java.lang.ClassNotFoundException: ptk_spu_ear.IRemoteRequestData
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at org.apache.xbean.osgi.bundle.util.equinox.EquinoxBundleClassLoader.loadClass(EquinoxBundleClassLoader.java:66)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.openejb.client.EjbObjectInputStream.resolveClass(EjbObjectInputStream.java:36)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1483)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.apache.openejb.client.EJBMetaDataImpl.readExternal(EJBMetaDataImpl.java:251)
at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at org.apache.openejb.client.JNDIResponse.readExternal(JNDIResponse.java:80)
at org.apache.openejb.client.Client.processRequest(Client.java:269)
... 32 more


Почему то пишет, что не найден класс. Сам проект с EJB добавил в сервлет.
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38779713
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал идти по такому пути
Код: java
1.
 IRemoteRequestData myejb = (IRemoteRequestData)context.lookup("ptk-spuEAR/ptk-spuEJB/StatelessSessionRequestData!ptk_spu_ear.IRemoteRequestData");


Из лога
[startup] Jndi(name=global/ptk-spuEAR/ptk-spuEJB/StatelessSessionRequestData!ptk_spu_ear.IRemoteRequestData) --> Ejb(deployment-id=ptk-spuEJB.jar/StatelessSessionRequestData)


Но тогда ругается на контекст
javax.naming.NotContextException: ptk-spuEAR/ptk-spuEJB/StatelessSessionRequestData!ptk_spu_ear.IRemoteRequestData
at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:165)
at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:605)
at org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:161)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at ru.mytoffnax.PersonAction.execute(PersonAction.java:48)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:731)
at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:48)
at org.apache.geronimo.tomcat.valve.ProtectedTargetValve.invoke(ProtectedTargetValve.java:53)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:267)
at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:397)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38779719
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mytoffnax,

ptk_spu_ear.IRemoteRequestData это тот же интерфейс, которого вы ждете в коде? или генеренный стаб какой-то?
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38779734
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Прошу прощения, возможно я чего то не понимаю...

ptk_spu_ear.IRemoteRequestData это интерфейс
StatelessSessionRequestData это нужный бин от этого интерфейса
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780020
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так мне не кто не поможет? =(
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780025
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mytoffnaxТак мне не кто не поможет? =(
Вам можно только посочуствовать. Geronimo 3 + EJB это двойной удар.
ptk_spu_ear это вы так пакет обозвали?
Сервер не видит вашего интерфейса. Он вообще есть на сервере? в WEB-INF/lib?
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780047
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению есть и работает.

Ладно, спасибо за помощь, буду дальше голову ломать
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780052
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mytoffnaxК сожалению есть и работает.
Ладно, спасибо за помощь, буду дальше голову ломать
Тогда нужно разбираться в евойном OSGi. Потому что тот класслоадер, который ищет этот интерфейс найти его не может.
Возможно это класслоадер контейнера. Попробуйте класс вынести в либы контейнера в качестве эксперимента.
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780073
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mytoffnax,

org.apache.openejb.client.RemoteInitialContextFactory, наверное есть локальный, его попробуйте. а лучше
InitialContext context = new InitialContext(); сам найдет фабрику.
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780084
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD,

не заметил "к удалённой Ejb", извиняюсь, не подойдет
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780091
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mytoffnax, проясните, по стеку видно что запрос делается с Geronimo, а Ejb находится вообще на другом сервере?
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38780106
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FD,

нет, они находятся на одном сервере, в дальнейшем просто придётся раскидать по разным.
...
Рейтинг: 0 / 0
Проблема подключения удалённого EJB в сервлете
    #38782058
mytoffnax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую перенести всё на томкат, но выскакивает ошибка на InitialContext

Код: java
1.
2.
3.
4.
	           Properties prop=new Properties();
	           prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
	           prop.put("java.naming.provider.url", "ejbd://localhost:4201");
	           InitialContext context = new InitialContext(prop);



Что такое может быть? javaee-api и openejb-client добавил. Заранее спасибо!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема подключения удалённого EJB в сервлете
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]