NetBeansからglassfishへPostgresのデータソースの自動的生成を試してみました。
(1) データベース接続情報追加
まずは、「サービス」の中のデータベースより、PostgreSQLのDBを参照できるようにします。
PostgreSQL用JDBCドライバーのパスを指定します。
接続情報を入力し、「接続をテスト」ボタンにて、接続確認を実施。
オッケー! NetBeansからlocalhost上のPostgreSQLを参照できるようになりました!
(2) 持続性ユニット(persistence.xml)の作成
ファイル新規作成より、「持続性」→「持続性ユニット」を選択します。
下記のソースが作成されました。
実際は、ここにJPA設定を記述していくことになるのでしょう。
persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="metaldbPU" transaction-type="JTA"> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="create"/> </properties> </persistence-unit> </persistence>
(3)Entityクラスの作成
新規作成にて、データベースからエンティティ・クラスを選択します。
ここで、データ・ソースを選択することになります。
まだGlassfishでデータ・ソースを準備していなくても、「新しいデータ・ソース」を選択できました。
使用可能な表より、Entityクラス作成対象のテーブルを追加します。
(4) 確認
(3)まで作業を行った後、Mavenビルド後、アプリを実行したところ、「glassfish-resources.xml」というファイルが作成されていました。
glassfish-resources.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd"> <resources> <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.postgresql.ds.PGSimpleDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="post-gre-sql_metaldb_postgresPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false"> <property name="serverName" value="127.0.0.1"/> <property name="portNumber" value="5432"/> <property name="databaseName" value="metaldb"/> <property name="User" value="postgres"/> <property name="Password" value="********"/> <property name="URL" value="jdbc:postgresql://127.0.0.1:5432/metaldb"/> <property name="driverClass" value="org.postgresql.Driver"/> </jdbc-connection-pool> <jdbc-resource enabled="true" jndi-name="jdbc/metalDS" object-type="user" pool-name="post-gre-sql_metaldb_postgresPool"/> </resources>
なお、glassfish管理コンソールを起動し、JDBCを確認してみると、Connection Poolとリソースが作成されていることを確認できました。