Wildfly 9 で実行されている Web アプリケーションを、SQL 認証の使用から Windows 認証の使用に移行しました。また、データベースで直接メンテナンス タスクを実行する Java ユーティリティを更新する必要もあります。Web アプリケーションは正常に動作しますが、ユーティリティは休止状態構成のデフォルトのスキーマ設定を無視しているようです。SQL Server でのトレースは、wildfly からのクエリにはmyschema.<table name>
あるが、私のユーティリティからのクエリには<table name>
.
SQL Server には、wildfly サービスが実行されているドメイン アカウントのログイン (DOMAIN\myservice) があり、同じアカウントとしてユーティリティを実行しています。
ログインは、同じ名前 (DOMAIN\myservice) を持つデータベース上のユーザーにマップされます。
ユーザーには、dbo の既定のスキーマがあります。
util-hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://sqlhost\INSTANCE:1433;databaseName=MYAPP;integratedSecurity=true</property>
<property name="hibernate.connection.pool_size">5</property>
<property name="hibernate.default_schema">myschema</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="....hbm.xml"/>
<mapping resource="...hbm.xml"/>
...
</session-factory>
</hibernate-configuration>
戦争休止状態.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.datasource">jdbc/MYAPP</property>
<property name="hibernate.default_schema">myschema</property>
<mapping resource="....hbm.xml"/>
<mapping resource="...hbm.xml"/>
...
</session-factory>
</hibernate-configuration>
ワイルドフライ データソース
<datasource jndi-name="java:jdbc/MYAPP" pool-name="MyDataSource" enabled="true">
<connection-url>jdbc:sqlserver://sqlhost\INSTANCE;databaseName=MYAPP;integratedSecurity=true</connection-url>
<driver>sqljdbc4.jar</driver>
<pool>
<max-pool-size>10</max-pool-size>
</pool>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker" />
<validate-on-match>false</validate-on-match>
<background-validation>true</background-validation>
<background-validation-millis>30000</background-validation-millis>
</validation>
</datasource>
私のユーティリティのログには、次のように表示されます。
SettingFactory:222 - Default schema: myschema
しかし、さらに下にエラーが表示されます:
com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name '<table name>'
myschema 内のテーブルの場所。
休止状態のマッピング ファイルを次のように更新しようとしました。
<hibernate-mapping schema="myschema">
<class name="MyType" table="table_name">
と
<hibernate-mapping>
<class name="MyType" schema="myschema" table="table_name">
しかし、それもうまくいきませんでした。
物事のバージョン
- Wildfly 9.0.2.Final
- Hibernate 3.5.6-ファイナル
- Microsoft SQL JDBC 4.1
- SQL Server 2014
- JRE 7u67