![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Привет Всем!
У меня такая проблема: Создаю простой EJB конпонент (используя NetBeans IDE 4.1) после чего устанавливаю его на Sun System Application Server 8. Вроде делаю все как надо - все классы в нужны полях настройки указал (wizard помог), JNDI имя прописал, но когда пытаюсь клиентской программой подключиться к компоненту, то постоянно вылетает исключение: код: InitialContext ic = new InitialContext(); Object homeObject = ic..lookup("NewSessionBean"); сообщение об исключении: ------------------- javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284) at javax.naming.InitialContext.lookup(InitialContext.java:351) at javaapplication2.Main.main(Main.java:32) ------------------- Я догадываюсь, что от меня требуется инициализировать объект InitialContext, установив его свойство INITIAL_CONTEXT_FACTORY, но каким классом я не знаю.... Подскажите как эту систуацию разрулить, плз.... |
|||
|
||||
tux |
|
||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Насколько я понимаю ты подключаешься не из окружения сервера. Если бы клиент работал на сервере, такого кода
тебе хватило бы. Но поскольку подключаемся снаружи надо задать кой-какую инфу клиенту JNDI чтобы он нашел свой сервис и смог там идентифицироваться. И java.naming.factory.initial - не единственное, что придется задать. Итак, в идеале все должно выглядеть примерно следующим образом:
Здесь
|
||||
|
|||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
на мое собственное удивление пакет com.sun.appserv не содержит
пакет naming.... и соответственно класса фабрики тоже.... где же его взять? |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Странно. Взято из документации по Sun System Application Server 8, а именно отсюда - http://docs.sun.com/source/817-6087/dgacc.html.
Тогда еще один вариант:
Установленного сервера у меня нет, проверить версии негде, поэтому вот еще пара ссылок на примеры работы с JNDI от Sun:
![]() |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Эх............. не простое это дело.
На 1050 порте у меня вист svchost вряд ли он поможет мне соединится с SSAS. Исключения постоянно вылетают типа: org.omg.CORBA.COMM_FAILURE. Но все равно буду биться! Попробую что нибуть инноязычное почитать..... |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
А если не секрет что значит из окружения сервера или клиента? То есть я не могу понять как деплоить клиенты. По идее если клиент страница жсп, то она должна быть там где и компонент ежб, это же логично..А вот если ява приложение.то тогда да, скажите, с жсп же реально так:
<%@ page import="converter.Converter, converter.ConverterHome, javax.ejb.*, java.math.*, javax.naming.*, javax.rmi.PortableRemoteObject, java.rmi.RemoteException" %> <%! private Converter converter = null; public void jspInit() { try { InitialContext ic = new InitialContext(); Object objRef = ic.lookup("java:comp/env/ejb/TheConverter"); ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objRef, ConverterHome.class); converter = home.create(); } catch (RemoteException ex) { System.out.println("Couldn't create converter bean."+ ex.getMessage()); } catch (CreateException ex) { System.out.println("Couldn't create converter bean."+ ex.getMessage()); } catch (NamingException ex) { System.out.println("Unable to lookup home: "+ "TheConverter "+ ex.getMessage()); } } public void jspDestroy() { converter = null; } %> Один вопрос который меня мучает, это зачем и для чего импортировать классы ранее созданных компонент..вот тут я совсем не вьезжаю.Обьясните пожалста. Вот этот фрагмент. <%@ page import="converter.Converter, converter.ConverterHome, -------------------- The truth is out there |
|||
|
||||
powerOn |
|
||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Импортируются скорее не классы, которые ранее были созданы, а описания интерфейсов, которые поддерживает этот компонент. Это делается для того, чобы клиент знал с кем имеет дело и мого вызвать требуемые ему методы объекта.
Компилятор должен знать, что это это за классы такие - Converter, ConverterHome, правдо ведь?
Я так понимаю, что под оружением понимается библиотеки классов и пременные оружения сервера, к которому идет запрос на получение объекта. Если у клиента есть возможность использовать эти библиотеки, значит он работает в окружении сервера. |
||||||
|
|||||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Тогда обьясните пожалста, правильно ли я рассуждаю:
1)Я делаю jar-файл компонента 2)Кидаю его в папку server/default/deploy в жбосе и он нормально деплоицца 3)Проблема: в каком месте точно описывается JNDI имя компонента? а)Когда жбосс в консоли его выводит при деплое б)В файле ejb-jar.xml(ваще путаница с тегами) в)Или как? 4)Строю JSP страницу, в результате получаю .war файл, или нада просто страница? 5)Процесс конекта понял, вопрос тока в каком формате импортировать интерфейс созданного компонента, вот строка <%@ page import="converter.Converter, converter.ConverterHome, откада он ее импортирует? не понимаю. или может converter это имя папки откуда подгружаецца интерфейс, или имя размещенного на сервере приложения, а второй Converter это имя самого итерфейса. Неясно. Судя по логике в случае жсп страница и иже с ней должны быть на том же жбоссе..тока как ее там прописать? Я понимаю, что клиент запрашивает жсп страницу, код жсп загружает класс компонента, выполняет код соединения с компонентом, а компонент уже с бд. Весь вопрос с JNDI и деплоем страницы. Заранее спасибо за любые отклики, буду очень благодарен помощи. ps. Неужели в NetBeans 4.1 можно разрабатывать EJB? ![]() -------------------- The truth is out there |
|||
|
||||
powerOn |
|
||||||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Легко! Только 4.1 интегрируется с Sun Java System Application Server 8.1, а вот 5.0 интегрируется еще и с JBoss 4.0.3! Хочу сразу добавить, что когда говрят "программа работает в окружении сервера" могут иметь ввиду работает прямо на сервере, например: Клиент - JSP страница использующая EJB. Здесь первый может работать на том же сервере, что и используемая им EJB (Sun Java System Application Server - может как Web приложения разворачивать, так и EJB).
Не знаю точно как в JBoss (я с ним почти не работал), но SJSAS он прописывается в sun-ejb-jar.xml.
Здесь описывается компонет ejbean, а JNDI имя прописано как <jndi-name>ejb/powerbean</jndi-name> Именно строкой такой "ejb/powerbean" его ищут методом lookup. Может в JBoss аналогичные теги, они ведь, теоритически, не должны сильно отличаться.
War файл это как Jar файл, но разница лишь в том, что War - содержит в себе Web приложение, готовое быть развернутым на сервере, а Jar - просто Java приложение или архив с классами. Так ребята из Sun решили расширение назначить, а впринципе и то и то - архив. War архив обычно получается после стадии сборки Web приложения. По пункту 5. Он импортирует её из War архива который успешно за deploy - ил. Раскрой его каким нибудь архиватором, оцени структуру. Как ты и сам догадался:
![]() Это сообщение отредактировал(а) MoonCat - 18.2.2006, 21:45 |
||||||||||
|
|||||||||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
MoonCat
Вот спасибо..Уже что-то начинаю понимать но не вьезжаю в структуру всего этого по ходу. Я никак не пойму: я сделал EJB бин mybin например, получил джар-файл, развернул его на сервере, я ,извините, туплю страшно, но никак не доходит как в JSP странице происходит подгружение домашних и удаленных интерфейсов созданных компонент, а если бы это было клиентское win32 приложение? Вот к примеру на компе А клиент, на компе В сервер с моим компонентом. Комп А пытаецца соединицца с В методами там lookup и т д это понятно, но как происходит подгружение <%@ page import="converter.Converter, converter.ConverterHome, Ведь клиент и не догадываецца о существовании этих интерфейсов, ну ладно допустим с жсп еще как-то мона понять там, на сервере одном с ежб и т д, но мне просто интересно, если вин32 прога, принцип тот же? тада не понимать. Я подозреваю что я ваще не в том направлении думаю. Может мою мысль ктонть пнет в нужном направлении? а то в голове каша. Спасибо заранее. ![]() ![]() зы А не подскажете какую версию нетбинс качать? с ж2ее или се ядром? по смыслу ее, но кто его знаить ![]() Это сообщение отредактировал(а) zone51 - 18.2.2006, 22:47 -------------------- The truth is out there |
|||
|
||||
powerOn |
|
||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Качай раздельно, так вернее будет. NetBeans 5.0.
Клиент очень даже догадывается. Чтобы клиент мог воспользоваться твоим EJB он должен быть скомпилирован с его интерфейсами. Ты пишешь интерфейсы для EJB, а потом отдаешь их тем, кто хочет использовать твой сервис. И клиенты естественно знают о том какие методы существуют.
В архиве .War твоего web приложения должна быть папка converter, а в ней Converter.class и ConverterHome.class. Из архива и загружает. Это сообщение отредактировал(а) MoonCat - 18.2.2006, 23:56 |
||||||
|
|||||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
То есть бизнес методы доступны клиентам? А если они секретные? Так что и исходники все раскрывать всем подряд? Ага, ну наконец то я понял откуда грузит..Спасибо огромное..И если вас не затруднит то еще вопроси к касательно JDBC а именно прописки драйверов базы данных в моем случае mySQL. В общем сакчал инсталлятор дров, поставил, залез в панель управления->администрирование->ODBC там че-то, прописал источник данных пользователя там под таким то именем, и не пойму как должна вылядеть строка инициализации драйвера во фрагменте DriverManager.forName("драйверСУБД") как выглядит "драйверСУБД"? какой формат эой строки? где-то в книге отыскал длинную строку что-то типа org.gji.mm.... и т д, а виндовозные базы ODBC тада зачем? Обьясните если не трудно.. ![]() зы http://www.netbeans.info/downloads/download.php NetBeans IDE 5.0 Installer netbeans-5_0-windows.exe (58.03 MB) ------------------------------------ NetBeans Profiler 5.0 Installer netbeans-profiler-5_0-win.exe (9.53 MB) ------------------------------------ NetBeans Mobility Pack 5.0 Installer netbeans_mobility-5_0-win.exe (22.49 MB)(не то) ----------------------------------- NetBeans IDE 5.0 + Application Server 8.2 Bundle Installer sjsas_pe-8_2_2005Q2-nb-5_0-fcs-bin-win.exe (101.17 MB) что из этого качать если учесть что буду пахать с жбоссом? Заранее большое спасибо. ![]() ![]() Это сообщение отредактировал(а) zone51 - 19.2.2006, 00:43 -------------------- The truth is out there |
|||
|
||||
powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
1) Это сама IDE ставится на JDK, её достаточно что бы работать с JBoss, но толко версии 4.0.3. 2) Это профайлер, подключив его к IDE можно анализировать ход выполнения твоей программы, например какие ните в данный момент активны, все с грфическом виде... В общем наворот, но лично мне пока и без него не плохо живется. 3) Мобилити пак - надстройка к IDE чтобы проги писать под телефоны (J2ME). Там графичекий редактор форм и прочии прибамбасы. 4) IDE + Sun Java System Application Server 8.2 - таже IDE + сановский сервер в одном пакете. Для тех кому лень качать с www.java.sun.com и подключать сервер ручками, хотя это совсем не сложно. какчай 1, этого вполне достаточно для работы JBoss 4.0.3 Про mySQL пока ничего сказать не могу, еще руки до него не дошли...
Ты в интерфейсах пропиши только те бизнес методы, о которых должны знать клиенты. Или на крайний случай объяви секретные методы как private, тогда их точно никто не вызовет. И не забывай, что исходники клиентам не поставляются ![]() ![]() Это сообщение отредактировал(а) MoonCat - 19.2.2006, 11:13 |
||||
|
|||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
аа..ну наконец-то вьехал!
![]() ![]() Это сообщение отредактировал(а) zone51 - 19.2.2006, 13:27 -------------------- The truth is out there |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Уважаемый MoonCat! Извините, но появилась трабла, помогите если не трудно пожалуйста..
------------------------------------------------------------- compile-single-jsp: init: deps-module-jar: deps-ear-jar: deps-jar: library-inclusion-in-archive: library-inclusion-in-manifest: compile: log4j:WARN No appenders could be found for logger (org.apache.jasper.compiler.JspRuntimeContext). log4j:WARN Please initialize the log4j system properly. Compiling 1 source file to C:\tempnettest\shop\shop-war\build\generated\classes C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:7: package myshop does not exist import myshop.workerBean; C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:8: package myshop does not exist import myshop.workerRemoteHome; C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:67: cannot find symbol symbol : class Context location: class org.apache.jsp.test_jsp Context cont=new InitialContext(); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:67: cannot find symbol symbol : class InitialContext location: class org.apache.jsp.test_jsp Context cont=new InitialContext(); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:69: cannot find symbol symbol : class workerHome location: class org.apache.jsp.test_jsp workerHome work=(workerHome)PortableRemoteObject.narrow(obj,workerHome.class); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:69: cannot find symbol symbol : class workerHome location: class org.apache.jsp.test_jsp workerHome work=(workerHome)PortableRemoteObject.narrow(obj,workerHome.class); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:69: cannot find symbol symbol : class workerHome location: class org.apache.jsp.test_jsp workerHome work=(workerHome)PortableRemoteObject.narrow(obj,workerHome.class); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:69: cannot find symbol symbol : variable PortableRemoteObject location: class org.apache.jsp.test_jsp workerHome work=(workerHome)PortableRemoteObject.narrow(obj,workerHome.class); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:71: cannot find symbol symbol : class workerRemote location: class org.apache.jsp.test_jsp workerRemote remot=obj.findByPrimaryKey(); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:71: cannot find symbol symbol : method findByPrimaryKey() location: class java.lang.Object workerRemote remot=obj.findByPrimaryKey(); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:72: out is already defined in _jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) String out=remot.gettest(); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:74: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:75: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:76: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" </body>\n"); ^ C:\tempnettest\shop\shop-war\build\generated\src\org\apache\jsp\test_jsp.java:77: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("</html>\n"); ^ 15 errors C:\tempnettest\shop\shop-war\nbproject\build-impl.xml:361: The following error occurred while executing this line: C:\tempnettest\shop\shop-war\nbproject\build-impl.xml:353: The following error occurred while executing this line: C:\tempnettest\shop\shop-war\nbproject\build-impl.xml:141: Compile failed; see the compiler error output for details. BUILD FAILED (total time: 1 second) ---------------------------------------------------------------------- Это компиляция жсп страницы, причем сначала я этот файл test_jsp.java не вижу, он появляецца после ошибок. -------------------- The truth is out there |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |