3

サーバー上のjarをアップグレードせずに、耳の中で最新の休止状態バージョンを使用したいです。http://jaitechwriteups.blogspot.com/2008/08/how-to-upgrade-hibernate-in-jboss.htmlの指示に従っています。

ただし、現在の問題は、アプリケーションが deploy フォルダーにある jboss-local-jdbc.rar を取得していないことです。

2009-07-21 09:01:50,347 INFO  [org.jboss.system.ServiceConfigurator] Problem configuring service jboss.jca:service=DataSourceBinding,name=MockDS
org.jboss.deployment.DeploymentException: Exception setting attribute ConnectionManager = jboss.jca:service=LocalTxCM,name=MockDS on mbean jboss.jca:service=DataSourceBinding,name=MockDS; - nested throwable: (javax.management.InvalidAttributeValueException: Set attribute  has class class javax.management.ObjectName loaded from null that is not assignable to attribute class class javax.management.ObjectName loaded from org.jboss.mx.loading.UnifiedClassLoader3@1babddb{ url=file:/C:/servers/jboss-4.2.2.GA/server/default/tmp/deploy/tmp22267hibernate_upgrade_test.ear ,addedOrder=43})
    at org.jboss.system.ServiceConfigurator.setAttribute(ServiceConfigurator.java:707)
    at org.jboss.system.ServiceConfigurator.configure(ServiceConfigurator.java:382)
    at org.jboss.system.ServiceConfigurator.internalInstall(ServiceConfigurator.java:462)
    at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:171)
    at org.jboss.system.ServiceController.install(ServiceController.java:226)
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

何か案が ?

4

4 に答える 4

7

そのページの手順をスキャンしましたが、ほとんど同じ手順に従います. jboss-app.xml決定的な違いは、彼のファイルの内容にあるようです:

<jboss-app>
 <loader-repository>
   org.myapp:loader=SomeClassloader
   <loader-repository-config>
      java2ParentDelegation=false
   </loader-repository-config>
 </loader-repository> 
</jboss-app>

私のシステムは親委任を無効にせず、ローダー名のみを持っています:

<jboss-app>
 <loader-repository>org.myapp:loader=MyAppName</loader-repository> 
</jboss-app>

deploy/ear-deployer.xmlJBoss のファイルで Isolated=true 属性を設定する必要がある場合もあれば、そうでない場合もあります。

そして、それはうまく機能します。親の委譲を無効にすると、アプリケーションがコンテナーと何らかの方法で対話する機能が損なわれますが、これは少し極端です。ただし、そのオプションを省略すると、ヤクのシェービングが少し必要になります

このjava2ParentDelegation=falseオプションを省略すると、JBoss のクラスと同じ名前を持つ EAR 内のクラスが優先的に EAR からロードされる状況になります (これは良いことです)。ただし、EAR にないクラスは JBoss のライブラリに分類されます。の場合はjboss-local-jdbc.rarこれでいいです。ただし、特有の副作用が発生する可能性があります。

たとえば、Hibernate がセッション ファクトリを作成するとき、Hibernate Search および Hibernate Validator ライブラリを探し、それらも起動しようとします。これらが EAR に存在しない場合は、JBoss のライブラリで検出されます。問題は、JBoss に同梱されている Search と Validator のバージョンが、EAR にパッケージ化された Hibernate と互換性がない可能性があるため、リンカー エラーが頻繁に発生することです。

これに対する解決策は、Hibernate セッション ファクトリを構成して、構成プロパティ (hibernate.validator.autoregister_listeners=falseおよびhibernate.search.autoregister_listeners=false) を使用して Search および Validator リスナーの登録を無効にするか、互換性のあるバージョンの Search および Validator も EAR にパッケージ化することです。

于 2009-07-21T08:55:58.497 に答える
1

ジェリッシュ、

アプリケーションのパッケージ内に javax.management.* クラスを含む jar をパッケージ化しているようです。その jar をアプリケーション パッケージから削除します (JBoss AS にすでに同梱されているため)。

于 2009-07-29T11:44:37.717 に答える
0

jboss-classloading.xmlクラスローディング専用のファイルを使用しています。jboss-app.xml構文は、私にとって構文よりも自然です。包括的な説明については、http://phytodata.wordpress.com/2010/10/21/demystifying-the-jboss5-jboss-classloading-xml-file/を参照してください。

于 2013-06-10T14:48:36.810 に答える
-1

jboss アプリケーション サーバーの休止状態の jar ファイルを削除してみませんか?

于 2009-07-23T15:06:12.587 に答える