LINUX.ORG.RU

[noob]J2EE, Netbeans, PM

 


0

1

Только начинаю разбираться с явой по примерам http://www.java-course.ru/students/students.php?name=part11
кратко:
Есть таблица в MySQL, ей создал соответствующий entity класс Students.
После этого создаю persistance unit.
Дальше - SessionBean класс ManagementSystem.
Для него создаю метод getStudents:

public Students getStudents(int studentID) {
	return em.find(Students.class, studentID);
}
для persistance unit создается вот такой вот persistance.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="Students-ejbPU" transaction-type="JTA">
    <jta-data-source>students</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>

  <persistence-unit name="Students-ejbPU2" transaction-type="JTA">
    <jta-data-source>jdbc/students</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>
Вопрос - зачем там создаётся по умолчанию две секции persistence-unit? При этом проект не собирается и ругается (Caused by: javax.annotation.processing.FilerException: Attempt to recreate a file for type students.entity.Students_)
Насколько мне хватает знаний - это похоже на http://netbeans.org/bugzilla/show_bug.cgi?id=183779 (правда, знаний на то, чтоб еще понять, что там советуют не хватает(( )
Если в одной из секций поставить
<exclude-unlisted-classes>true</exclude-unlisted-classes>
, то проект хотя бы компилируется без ошибок, но при попытке воспользоваться в новом сервлете entityManger'ом (через Management.getStudents(1)) выдается error 500:javax.ejb.EJBException (это если делать без try,finally)
Если же объект получать создавая его вручную
Students d = new Students(1);
то все нормально работает. Поэтому вопрос - что я делаю не так?(


Ответ на: комментарий от spdooh

Удали второй persistence-unit. Дальше. А ты уверен, что ты у базы запрашиваешь именно то, что надо? Students и Student - не разные классы? Далее. Каким образом ты создавал таблицу в БД? Каким образом осуществлял меппинг объекта на таблицу? Можешь куда нибудь исходный код проекта скинуть?

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

Удали второй persistence-unit.

Насколько понимаю - если поставить true в секции exclude-unlisted-classes это практически эквивалентно удалению (хотя и удалять тоже пробовал)

А ты уверен, что ты у базы запрашиваешь именно то, что надо? Students и Student - не разные классы?

Практически уверен. Классы создаются через - правый клик, создать entity class from database. Больши ничего с названием student(s) не создавал

Каким образом ты создавал таблицу в БД?

phpMyAdmin - создать базу, выполнить запрос «create table students (перечень полей)». Таблица с данными точно есть.

Можешь куда нибудь исходный код проекта скинуть?

http://spd.name/upload/Students.7z

spdooh
() автор топика
Ответ на: комментарий от spdooh
[#|2011-12-13T09:58:37.770+0700|SEVERE|glassfish3.1.1|javax.enterprise.resource.resourceadapter.com.sun.gjc.util|_ThreadID=26;_ThreadName=Thread-2;|RAR5099 : Wrong class name or classpath for Datasource Object 
java.lang.ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource

У тебя не найден jar с драйвером БД. Кинь его в папку lib своего сервера приложений. Правда в какой именно lib я тебе даже и не скажу...

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

У тебя не найден jar с драйвером БД. Кинь его в папку lib своего сервера приложений. Правда в какой именно lib я тебе даже и не скажу...

в смысле драйвер (mysql-conector-java-x.x.xx-bin.jar) кинуть куда-то?

spdooh
() автор топика
Ответ на: комментарий от stevejobs

Тот в котором есть класс MysqlDataSource закинуть в либ приложения или в либ вебсервера

нашел класс в mysql-conector-java-x.x.xx-bin.jar/com/mysql/jdbc/jdbc2/optional/MysqlDataSource.class
Пораскидал практически по всему серверу - ./lib; ./domain/domain1/lib; ./domain/domain1/lib/ext; еще в несколько мест засунул. Не помогло.

Зато понял откуда взялось две секции в PU - при создании первого entity class from DB есть галочка - создать persistance unit. Ее не заметил, а потом по хау-тушке создал еще один.

spdooh
() автор топика
Ответ на: комментарий от TheKnight

я понял, именно его и раскидывал - mysql-conector-java-x.x.xx-bin.jar
(сейчас, к сожалению не могу еще проверить - забыл дома машину включить( )

spdooh
() автор топика
Ответ на: комментарий от TheKnight

Та же самая. правда, нашел в проекте что можно подключать библиотеки) Но пока еще не пробовал - вечерод до домашнего компа доберусь

spdooh
() автор топика
Ответ на: комментарий от TheKnight

А сейчас ошибка все та же или поменялась?

Был неправ, ошибка поменялась.
Но там сам разобрался, что в persistance.xml забыл (вообще про это не знал) поставить галочку - включить все классы сущности в модуль.
Спасибо большое за помощь!

(Еще чуть чуть и вернулся бы обратно на пхп ))

spdooh
() автор топика
Ответ на: комментарий от spdooh

Все вместе. У тебя не было драйвера для твоей БД. А еще ты накосячил с persistence.xml. И мой тебе совет - бросай нафиг Netbeans и этот курс. Он немного на мой взгляд кривой. И многое скрывает от тебя, потом не сможешь сообразить, что и как во многих случаях...

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

Все вместе

Это - в чем была проблема, а куда именно класть драйвер...
с курсом понятно - действительно зачастую описание на уровне «совершить вот эти вот действия мышкой». сейчас еще параллельно читаю тьюториалы от оракла и нетбинса.
А что вместо NetBeans'a? Тут зачастую советуют intellij idea, но вроде как для EE, пусть и в учебных целях платная лицензия, остается разве что eclipse...

spdooh
() автор топика
Ответ на: комментарий от spdooh

Eclipse на мой взгляд неплохая IDE. Посмотри ее. А насчет тьюториалов... Даже не знаю что сказать. Меня учили на боевом проекте в свое время. Да и ищут сейчас в основном людей на Spring.

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

У нас нет боевых проектов, как и людей, которые бы научили. Поэтому хочу свой создать - а в нем использовать то, что потом пригодилось бы на новой работе.
Видимо, стоит смотреть Sprng, Hibernate, JUnit, и использовать SVN.
Просто после пхп встал совсем тупой вопрос - как написать хелло ворлд. После него возникло ощущение монструозности жавы. Поэтому решил сначала что-то на основе четко описанного хау-ту, чтоб хотя бы иметь представление, что такое JSB, JSP, сервлет и прочее, а потом начинать писать свой проект.
IDE - хотелось бы сначала вообще без нее, но я руками столько XML не напишу)

spdooh
() автор топика
Ответ на: комментарий от TheKnight

Можешь еще предложить фреймворки, которые стоило бы использовать в проекте для обучения? (с целью потом на собеседовании сказать что их использовал)

spdooh
() автор топика
Ответ на: комментарий от spdooh

По фреймворкам: GWT, JSF. Собственно могу сказать следующее - EJB мне нравятся. И на мой взгляд 3.1 сделаны очень хорошо. Но лично у меня в фирме их не используют. Для решения разных задач я бы стал использовать и Spring и EJB - технологии, как технологии. Плюс Spring - большое количество документации и тьюторов рассчитанных чуть ли не на блокнот в качестве IDE. Что касается JSF и GWT - JSF мне показался проще. GWT считается более востребованным.

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

Спасибо за ответ!
Пошел гуглить, что эти аббревиатуры значат)

spdooh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.