JBOSS发布JNDIデータソース

4193 ワード

基本環境:JBOSS S-5.1.0 GA
JBossはEJBを管理する容器とサーバーで、EJB 1.1、EJB 2.0、EJB 3.0の仕様をサポートします。しかし、JBossコアサービスにはservlet/JSPをサポートするWEBコンテナは含まれません。一般的にTomcatまたはJettyと紐付けて使用します。JBOSS公式サイトで最新のJBOSSサーバーをダウンロードできます。以下からJBOSSのデータソースを紹介します。そして、Javaコードテストに合格します。
第一歩:JBOSSを起動する
   私達はJDKをインストールした後、ダウンロードしたJBOSSを解凍して、解凍したjbossディレクトリを開けて、binディレクトリの下でjbosssvc.exeをクリックしてJBOSSをスタートしますが、JBOSSの異常を発見しました。正常に起動できません。異常とは:

Deployment "AttachmentStore" is in error due to: java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected=[java.net.URI] actual=[java.io.File]
JBOSSの配備「Attachment Store」はjava.io.Fileに依存していますが、java.io.Fileには入っていません。
解決方法:jbossが解凍した後にファイルの中でserver\default\boot strap\profile.xmlを見つけました。これはAttachment Storeという名前のbeanを変更しました。

	<bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore">
		<constructor><parameter class="java.io.File"><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /></parameter></constructor>
		<property name="mainDeployer"><inject bean="MainDeployer" /></property>
		<property name="serializer"><inject bean="AttachmentsSerializer" /></property>
		<property name="persistenceFactory"><inject bean="PersistenceFactory" /></property>
	</bean>
再びJBOSSを起動し、正常に起動します。
ステップ2:データソースのリリース
私が使っているデータベースはMySQLです。
1、まずmysqlのドライバjarファイルをjboss解凍ファイルにコピーした後、server\default\libディレクトリの中で、
2、docs\examples\jcaでmysql-ds.xmlを見つけました。このファイルをserver\default\deployディレクトリの下にコピーします。
3、mysql-ds.xmlを開けば、データのリンク配置が見られます。自分のデータベースによって配置を変更します。以下は自分の構成です。みんなは自分のデータベースに基づいて、具体的に変更してもいいです。
<local-tx-datasource>
    <jndi-name>MySqlDataSource</jndi-name>
    <use-java-context>false</use-java-context>
    <connection-url>jdbc:mysql://localhost:3306/localserver</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>sa123</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
設定が完了したら、Jbossを起動して、ブラウザを開けて、アクセスします。http://localhost:8080/jmx-consone/ページの左側でjboss.jcaをクリックして、右側で見られます。
name=MySqlDataSource,service=DataSourceBinding
name=MySqlDataSource,service=LocalTxCM
name=MySqlDataSource,service=ManagedConnectionFactory
name=MySqlDataSource,service=ManagedConnectionPool
MySQLデータソースのリリースに成功したと説明します。
ステップ3:Javaコードによるデータソースのテスト
eclipseを開いてJavaプロジェクトを新規作成し、JBOSSを解凍した後、ディレクトリの中のすべてのjarパッケージをプロジェクトに導入し、junnitテストパッケージを導入し、jndi.propertiesファイルを新たに作成し、JBOSS JNDIのURLとfactoryを設定します。
java.naming.provider.url=jnp://localhost
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
新しい試験クラスを作成します
public class TestDataSource {

	@Test
	public void getDataSource() throws NamingException, SQLException{
		//jndi   
		Context ctx = new InitialContext();
		DataSource ds = (DataSource) ctx.lookup("MySqlDataSource");
		Connection connection = ds.getConnection();
		PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM user WHERE user_id = 1");
		ResultSet rs = pstmt.executeQuery();
	    while(rs.next()){
	    	System.out.println(rs.getInt(1));
	    }
	}
}
Jbossを起動して、テストを実行して、データソースが入手できないことを発見しました。しかし、私達のデータソースは発表に成功しました。資料を探した後、発表されたデータソースmysql-ds.xmlにfalseを追加する必要があります。
その後テストを実行して、テストは合格できます。ここでJNDIデータソースを発表します。成功しました。