2

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
4

1 に答える 1