![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| powerOn |
|
||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Как так не видишь??А что ты тогда компилируешь то? Какой состав проекта? В основном компилятор ругается на отсутствие пакетов, например:
говорит, что пакет myshop.workerBean и myshop.workerRemoteHome отсутствует. Я так понимаю, что это интерфейсы твоего EJB - workerBean. Их нужно доключить к проекту - не только импортировать (import myshop.workerBean;), но и чтобы компилятор смог найти эти файлы (myshop/workerBean.class и myshop/workerRemoteHome.class) в папке с твоими исходниками. далее:
Здесь компилятор не может понять, что это за "зверь" такой - Context. Подключи javax.ejb.* - интерфейс Context там объявлен. ну и т.д. |
||||||
|
|||||||
| chief39 |
|
||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Суть такова: Ты разрабатываешь Свой Бин. Это абстрактное понятие, которое включает в себя не только класс реализации, но и дескриптор развёртывания и два интерфейса(Это всё чтоб твой бин подходил под спецификацию и другие могли с ним работать как с EJBином). Итак. ты реализовал Класс. В нём логика, алгоритмы и проч. и проч. Но сам по себе - он всего лишь класс. Теперь из него надо сделать бин. Ведь человек сам по себе ещё не программер. Ему нужен ещё комп, сеть, ПО, неограниченные запасы кофе чтоб он мог функционировать Теперь ты создаёшь дескриптор в xml, который описывает как этому Бину(я говорю не о классе а о абстрактном собирательном бине вообще) влиться в контейнер(суть Джибосс). Говоришь: "Вот мой бин, называется он так, логика реализована в этом классе, а доступаться к нему можно через этот и этот интерфейсы(ну и проч. и проч.)". Потом ты деплоишь его. Он становится доступен на сервере. Теперь кто-то хочет его использовать. Он должен знать что предоставляет этот Бин и знает что ему нужен именно этот Бин. Для этого есть интерфейс. Клиенту дают интерфейс и говорят: "вот это Бин может делать - пользуй его". Когда тебе нужно переключить телевизор, ты берёшь ИК излучение и проч. физические сочтавляющие мира чтоб твой пульт смог работать(naming и проч. стандартные EJB службы, которые реализованы в классах.). Т.е. пульт должен тоже уметь испускать ИК лучи и кодировать их. Но ведь тебе нужен конкретный телевизор Сони, и работать ты хочешь с Сони. У тебя есть интерефейс, который тебе дали создателя телевизора - суть пульт. Ты берёшь его, и работаешь именно с Сони(именно с твоим Бином). "Родной" пульт знает что и как в ЕГО телевизоре. Вот и ты подключаешь интерфейс Бина на клиенте(Ты ведь не сможешь включить телек, пока не пойдёшь и не возьмёшь пульт и не создашь клиентскую систему "Коля с пультом"). Но тут сделали ещё такой хитрый ход: разделили на два интерфейса - хоум и ремоут. Ремоут предоставляет именно то, что тебе нужно(бизнес логику), а хоум - скорее служебный, для управления бином(создания его экземпляра и проч.) То есть надоедливые, но необходимые "мелочи" по управлению БИНОМ, а не прикладными данными вынесли в хоум. Поэтому клиенту нужны реализованные EJB сервисы в классах(чтоб он вообще мог работать с Jbossom) и конкретный пульт (из двух интерфейсов) + знание где твой сервер и как зарегистрирован этот бин на нём(имя). Вот. После, с помощью EJB серисов находишь этот сервер и получаешь объект по имени(реально это реализация хоум интерфейса). Ну мы-то уже знаем, что это наш пульт, вот и интерфейсик от него валяется. Хоум. ХОП! И преобразовали! Ну а теперь через нашу рабочую лошадку "хоум" создаём бин на сервере и получаем ссылку на него. Есссно, в виде ремоут интерфейса - он ведь у нас тоже есть. Хм... Вот у нас ремоут интерфейс ,который ссылается на Бин(который лежит на сервере). У нас на руках все бизнес методы, вот мы и шуруем как обычным объектом. Ну разве что понадобится что-то системное с бином сделать - для этого у нас хоум ещё валяется Насчёт odbc - зачем? Получится связка - бин-jdbc-odbc-база. Лучше бин-jdbc-база. В папке деплой создаёшь mysql-ds.xml (уточни у мускульщиков), в жибоссе образец ds есть для hsql-db. Описание датасорсов - там. А драйвер под конкретную базу - это джарик с классами, которые реализуют доступ к конкретной базе. Он желателен в либах джибосса. То есть в класспасе Например. В /server/default/lib лежит ojdbc14.jar - это дрова к ораклу. В /server/deploy/oracle-ds.xml шось такое:
Это датасорс. Аналогично датасорсу в ОДБЦ. Тут тебе и местонахождение сервера ДБ и класс драйвера и пароль/логин и опциональные хреновины. По мусклю - нужен джарик с драйвером и уточнения мускулистов. Это сообщение отредактировал(а) chief39 - 20.2.2006, 12:48 -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||
|
|||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Вот спасибо! только я не пойму зачем тогда прописка ьускулистых дров в консоле виндовоза ODBC источники данных.Разве это никак нельзя использовать? И самый главный вопрос..хотя это надо к мускулистам так это вид строки подключения вернее загрузки дров..Попробую разобрацца..а сли не трудно, как подрубать свои классы компонента в проект чтоб их видно было? мот в папку какую? спасибо.
-------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
[quote]
как подрубать свои классы компонента в проект чтоб их видно было? мот в папку какую? [/quote Обычно их кладут в папку с исхониками (src) твоего проекта. Или в папке, имя которой прописано в Manifest - е в ключе Class-path. И не забывай что если класс лежит в каком - то пакете, то он должен находиться в папке с именем этого пакета. напримр класс org.apache.jsp.test_jsp дожен располагаться в след. структуре каталогов: org/apache/jsp/test_jsp.class |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Ну общими усилиями проблему с классами я решил используя простое перетаскивание пакетов в дереве нетбинса(структуре папок проекта).На это терь не ругаецца. Я с удивлением обнаружил что моя книга по ежб 2002-го года, и поэтому этот пример
<% Context cont=new InitialContext(); Object obj=cont.lookup("test1"); workerHome work=(workerHome)PortableRemoteObject.narrow(obj,workerHome.class); work.create(); workerRemote remot=obj.findByPrimaryKey(); String out=remot.gettest(); %> Ваще не пашет. Я проверял.у меня в javax.ejb интерфейса Context нету, есть EJBContext и еще пару но они все абстрактные и как с ними работать непонятно. ЩЗаодно не подскажите современные способы законектицца хотя бы с ежб компонентой. Огромное спасибо. -------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Странно, А класс InitialContext есть? Это сообщение отредактировал(а) MoonCat - 20.2.2006, 16:47 |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
неа, нема его вааще...гляди:
![]() и во ![]() -------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Стооооооооооп! А в javax.naming???
Добавлено @ 17:14 Я напарил! Он именно в javax.naming!!!!!!!!!! Это сообщение отредактировал(а) MoonCat - 20.2.2006, 17:13 |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
угу..спасибо преогромное..есть..тока терь во така ботва:
Compiling 1 source file to C:\shop\test\test-war\build\generated\classes C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:67: cannot find symbol symbol : variable PortableRemoteObject location: class org.apache.jsp.index_jsp myejbRemoteHome work=(myejbRemoteHome)PortableRemoteObject.narrow(obj,myejbRemoteHome.class); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:68: create(java.lang.Long) in mypackage.myejbRemoteHome cannot be applied to () work.create(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:69: cannot find symbol symbol : method findByPrimaryKey() location: class java.lang.Object myejbRemote remot=obj.findByPrimaryKey(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:70: out is already defined in _jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) String out=remot.gettest(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:70: cannot find symbol symbol : method gettest() location: interface mypackage.myejbRemote String out=remot.gettest(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:72: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:73: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("\n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:74: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("\n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:75: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:76: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:77: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" </body>\n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:78: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("</html>\n"); ^ 12 errors C:\shop\test\test-war\nbproject\build-impl.xml:361: The following error occurred while executing this line: C:\shop\test\test-war\nbproject\build-impl.xml:353: The following error occurred while executing this line: C:\shop\test\test-war\nbproject\build-impl.xml:141: Compile failed; see the compiler error output for details. BUILD FAILED (total time: 1 second) по ходу чота не находит опять..ща разбираюсь.. зы. Проблема решилась подключением lavax.rmi.*; но еще не все: Compiling 1 source file to C:\shop\test\test-war\build\generated\classes C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:69: create(java.lang.Long) in mypackage.myejbRemoteHome cannot be applied to () work.create(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:70: cannot find symbol symbol : method findByPrimaryKey() location: class java.lang.Object myejbRemote remot=obj.findByPrimaryKey(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:71: out is already defined in _jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) String out=remot.gettest(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:71: cannot find symbol symbol : method gettest() location: interface mypackage.myejbRemote String out=remot.gettest(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:73: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:74: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("\n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:75: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("\n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:76: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:77: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" \n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:78: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write(" </body>\n"); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:79: cannot find symbol symbol : method write(java.lang.String) location: class java.lang.String out.write("</html>\n"); ^ 11 errors C:\shop\test\test-war\nbproject\build-impl.xml:361: The following error occurred while executing this line: C:\shop\test\test-war\nbproject\build-impl.xml:353: The following error occurred while executing this line: C:\shop\test\test-war\nbproject\build-impl.xml:141: Compile failed; see the compiler error output for details. BUILD FAILED (total time: 2 seconds) Это сообщение отредактировал(а) zone51 - 20.2.2006, 17:38 -------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Ууух!
Не видит класса PortableRemoteObject. Он в javaх.rmi находится, импортируй его. Что это за книга такая, что примеры так плохо написаны? |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Н. Смирнов J2EE Проектирование и разработка кацца..
Я его уже импортировал..было 11 ош.а щас заметил грубую ошибку, я назвал свою строку именем out, а это предопределеный обьект жсп, терь во что: Compiling 1 source file to C:\shop\test\test-war\build\generated\classes C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:69: create(java.lang.Long) in mypackage.myejbRemoteHome cannot be applied to () work.create(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:70: cannot find symbol symbol : method findByPrimaryKey() location: class java.lang.Object myejbRemote remot=obj.findByPrimaryKey(); ^ C:\shop\test\test-war\build\generated\src\org\apache\jsp\index_jsp.java:71: cannot find symbol symbol : method testget() location: interface mypackage.myejbRemote String out1=remot.testget(); ^ 3 errors C:\shop\test\test-war\nbproject\build-impl.xml:361: The following error occurred while executing this line: C:\shop\test\test-war\nbproject\build-impl.xml:353: The following error occurred while executing this line: C:\shop\test\test-war\nbproject\build-impl.xml:141: Compile failed; see the compiler error output for details. BUILD FAILED (total time: 1 second) Что такое findByPrimaryKey() вааще и какие ему параметры нада? А метод create чота с парамеирами тута..странно. Заранее спасибо. -------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Какой тип объекта obj ? Код в студию для: mypackage.myejbRemoteHome и mypackage.myejbRemote |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
<%
Context cont=new InitialContext(); Object obj=cont.lookup("test1"); myejbRemoteHome work=(myejbRemoteHome)PortableRemoteObject.narrow(obj,myejbRemoteHome.class); work.create(); myejbRemote remot=obj.findByPrimaryKey(); String out1=remot.testget(); %>
Нипонял чо за код? -------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
В общем, Object obj=cont.lookup("test1"); этой строчкой ты создал объект типа Object. И естественно метода findByPrimaryKey() у него нет. Ты должен привести его к нужному типу, вероятно к этому mypackage.myejbRemote. P.S. Ты уж не принимай близко к сердцу.... Что-то у тебя многова-то ошибок по фундаментальным знаниям Java, рекомендую прочитать пару книжек, это весьма полезно. Некоторые доки есть здесь в FAQ. Ты до того как за J2EE взялся, под J2SE программировал? Если ты только начинающий в Java программер, то рекомендую сначала заняться её основами. |
|||
|
||||
| zone51 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
блин..да я понял что ява код, просто стормозил, неожиданно как-то
гг..я нипонял что значит в студию ------------------------------------------------------ Remote
--------------------------------------------------------------------- RemoteHome
А это myejbBean.java -----------------------------------------------------------------------------------------
в нетбинсах написано что все реализации в последний файл пихать..я сомневался но покорился Это сообщение отредактировал(а) Lamer George - 21.2.2006, 13:15 -------------------- The truth is out there |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |