пятница, января 16, 2009

Учим Seam жить только с Hibernate

Формула дня: Seam + JSF + Facelets + Hibernate + PostgerSQL в JBoss Developer Studio или в Eclipse+JBoss Tools
Если это то что вам нужно, то делаем следующее:
1. Открываем JBoss Developer Studio, создаем Seam Web Project
2. В /WebContent/WEB-INF/components.xml
пишем вместо <components следующее

<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:persistence="http://jboss.com/products/seam/persistence"
xmlns:transaction="http://jboss.com/products/seam/transaction"
xmlns:drools="http://jboss.com/products/seam/drools"
xmlns:bpm="http://jboss.com/products/seam/bpm"
xmlns:security="http://jboss.com/products/seam/security"
xmlns:mail="http://jboss.com/products/seam/mail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd
http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd
http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.1.xsd
http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.1.xsd
http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.1.xsd
http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd
http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.1.xsd
http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd">

далее убираем разделы
<persistence:managed-persistence-context..>
<persistence:entity-manager-factory..>
и вместо них добавляем

<persistence:hibernate-session-factory name="hibernateSessionFactory"/>
<!--наименование сессии ApplicationDatabase на свое усмотрение. Потом в экшенах используем @In Session ApplicationDatabase -->
<persistence:managed-hibernate-session name="ApplicationDatabase" session-factory="#{hibernateSessionFactory}" auto-create="true"/>
<transaction:hibernate-transaction session="#{ApplicationDatabase}"/>


3. Создаем /src/model/hibernate.cfg.xml, в который пишем

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.postgresql.Driver</property>
<!-- путь к северу-базе -->
<property name="connection.url">jdbc:postgresql://localhost:5432/postgres</property>
<!-- имя пользователя -->
<property name="connection.username">postgres</property>
<!-- пароль -->
<property name="connection.password">postgres</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="show_sql">false</property>
<property name="hbm2ddl.auto">create-drop</property>
<property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<property name="transaction.flush_before_completion">true</property>
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<!-- По мере создания здесь будем мапить сущности -->
<mapping class="org.domain.application.entity.myentity"/>
</session-factory>
</hibernate-configuration>

4. Unдеплоим/удаляем *-ds.xml, persistence.xml

вторник, января 06, 2009

Примеры JBoss Seam и Eclipse

Если вы хотите посмотреть примеры Seam в Eclipse, можно импортировать собранные веб-приложения. Вот здесь есть отличное описание того как импортировать. В общем и целом делаем следующее:
1. собираем ant-ом example из Seam
2. Импортируем war в Эклипс
3. Копируем из примеров сырцы
4. Импортим TestNG

Все.

Дополнительно полезные ссылки по настройке среды, серверов

How to make JBoss Seam work with Eclipse (for Windows)

RAD: Seam development with Eclipse and Tomcat Step-by-Step-Tutorial Screencast

HelloWorldSeam

Seam example with postgres

Tweaking JBoss Tools and Eclipse for Tomcat 6

Running JBoss' Seam on GlassFish

Setup of Seam 2.0 Applications for Tomcat 6.0

понедельник, января 05, 2009

VirtualBox и расширение виртуального диска

Полностью перешел на работе на VirtualBox, благо на рабочей станции хватает и процов и памяти. В 2.0.6. решили проблемы с тем что мелкософтовый офис на гостевой ОС файлы в шаре с хостовой ОС только на чтение видел, а в 2.1.0 наконец порядок навели со скоростью сетевых интерфейсов. Теперь у меня хостовая система будет всегда девственно чистая, исчезнут вопросы переустановки ОС каждые полгода. А виртуальных машин наклепал на все случаи жизни - одну для Серфинга, другую для ГИС/CAD, третью для VisualStudio, четвертую под Java, пятую для PostgreSQL/Tomcat под CentOS для тестов.
Но суть не в том.
Есть в VirtualBox возможность создания динамически расширяемого образа диска. Это диск, размер которого увеличивается по мере того как гостевая ось занимает все большее пространство. Вот делаешь себе такой диск на 6 Гб, устанавливаешь на нее Clean XP, которая на диске 2.5 Гб занимает, и клонируешь себе виртуальные диски с машинами на все случаи жизни. Все вроде отлично, но вдруг оказывается что 6 Гб мало, надо размеры динамического образа расширять до 20 Гб, и стоило так сделать с самого начала, а в Sun/Innotek как назло о таких как я не подумали. В итоге ищешь решения, коих много, но все имеют свои особенности.
Лично я для себя под вынь нашел следующую схему -
1. Создаю новый виртуальный диск нужного размера, подключаю его вторым к виртуальной машине
2. Загружаюсь в машину подключаю диск как базовый в гостевой выни
3. Запускаю snapshot.exe (http://www.drivesnapshot.de/en/down.htm) 250 кб
4. Делаю образ *.sna, сохраняю где-нибудь
5. Тут же ресторю образ на новый диск с его расширением до нужного размера
6. Делаю его загрузочным

Все, можно загружаться с нового диска. Практика показывает что слетают профиля. Ну это дело не страшное.

Мой список блогов