![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Ещё раз здрасти.
Вчера всех замучил с "JBoss вне localhost"/ Спасибо разобрался. Сегодня мучаю JBoss+Postgresql. Вроде даже получилось их подружить, но когда дело доходит до работы клиента возникает ошибка: java.lang.IllegalStateException: Failed to find method for hash:6844222132332216879 available={8594593460157411074=public abstract javax.ejb.EJBObject............. Что это?!?!?! она меня пугает - я не понимаю что мне хочет сказать JBoss. И ещё: как организовать работу с БД, чтоб работал autoincrement? Т.е. я не хочу создавать бины через метод create(id), хочу чтоб Jboss брал id из поля SERIAL в таблице. Подскажите плз. |
|||
|
||||
| ekr |
|
||||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
глянь сюда, может та жа самая трабла.
У тебя какой тип? CMP или BMP? Если CMP, то надо смотреть специфический дескриптор jboss-a, где обычно такие вещи настраиваются. Здесь я не помошник, JBoss не юзаю в production. А если BMP - то можно грамотно autoincrement-поле замутить. |
||||
|
|||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
у меня видимо CMP, хотя я, честно, не знаю чем эти два типа отличаются.
Я просто создал в META-INF jbosscmp-jdbc.xml? поэтому и думаю что у меня CMP Может я заблуждаюсь? - тогда как определить какой у меня тип? |
|||
|
||||
| ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
Загляни в ejb-jar.xml и найди следующий кусок:
В разделе <persistence-type> и указан тип персистенции: Container для CMP или Bean для BMP. Добавлено через 3 минуты и 3 секунды В случае CMP логику создания, удаления, загрузки и сохранения (jdbc код + sql-запросы) пишет сам контейнер, надо только задекларировать свойства в ejb-jar.xml и меппинги свойств бина на базу. Как раз в том самом jbosscmp-jdbc.xml. А в случае BMP всю логику персистенции надо писать руками. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
так вот что это значит
Ну я возложил эту обязанность на контейнер, значит у меня Container MP Если б сам БИН следил за сохранением своего состояния, то тут вопросов наверное не возникло бы. |
|||
|
||||
| ekr |
|
||||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
Бин (cmp или bmp) не следит ))) Это делает в любом случае контейнер. Другое дело, кто пишет логику сохранения - Вы или контейнер. Добавлено через 56 секунд
и правильно ))) человек должен думать, машина - работать. (С) не мое ) |
||||
|
|||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
META-INF/jbosscmp-jdbc.xml
Это сообщение отредактировал(а) Ulysses4j - 13.7.2007, 16:38 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
а у меня вот так:
Это не правильно? Добавлено через 1 минуту и 54 секунды и даже если xml правльный, то как тогда будет выглядеть метод create в Home-интерфейсе? |
|||
|
||||
| ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
Не знаю ((( Я jboss не юзаю. Судя по структуре, все гуд, у weblogic и websphere похожая суть специфического дескриптора cmp бинов. Метод create home-интерфейса будет принимать от клиента параметры. Это будут значения свойств сущности, которую надо внести в базу. Свойства все, кроме первичного ключа, т.е. клиент не будет передавать его. После декларации сигнатуры метода create в home-интерфейсе надо написать метод ejbCreate в классе реализации. Метод ejbCreate принимает тот же набор параметров, что и метод create home-интерфейса. В теле ejbCreate надо полученными как параметры значениями проинициализировать свойства бина через set-методы. Помимо инициализации свойств, метод ejbCreate так же отвечает за создание значения первичного ключа. Т.к. клиент нам его не передал, то надо сгенерить. А это ломает делать ))) Поэтому мы просто возвращаем из метода ejbCreate значение null, показывая, что пусть контейнер париться. А делать он будет это на основе информации из дескриптора jbosscmp-jdbc.xml. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
спасибочки за разъяснения, обязательно попробую как окажусь на работе,
и отпишусь. |
|||
|
||||
| Ulysses4j |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Можете попробовать еще заменить
на
Так будет больше похоже на то, что в моей книжке по JBoss написано. Это сообщение отредактировал(а) Ulysses4j - 15.7.2007, 21:43 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||
|
|||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
сказал как сказал ekr и Ulysses4j, но контейнер пытается вставить в поле id null и
естественно Postgres ругается. |
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 1 Всего: 10 |
Блин, у меня там куча ошибок: вместо Long - Integer, и вместо id - locationId - копипастинг... ;)
А как вот такой радикальный эксперимент: заменить все-таки тип id на Integer и написать:
? Добавлено через 1 минуту и 10 секунд А, не, наверное, не поможет. -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| Rusico |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Да, у меня сейчас Integer:
а вот на счёт
сейчас попробую Добавлено через 2 минуты и 4 секунды не, упорно запихивает в id null Добавлено через 4 минуты и 26 секунд может проблема в
может другая какая строка должна быть? Ведь, как я понимаю это команда для генерации нового идентификатора? вот может он и не может сгенерить id. |
||||||
|
|||||||
| ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
не спец по subj, но, может, здесь надо указать имя sequence, из которой вытягиваются уникальные значения? |
|||
|
||||
![]()
|
| Правила форума "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. |