EJB 3.0アプリケーションでは、ランダムに発生するjava.lang.NoClassDefFoundErrorが発生しています。
これは、IDEでローカルに発生するだけです。
設定:
OS: Windows 7 32 Bit
Java JDK: 1.6.0_24 (32 Bit)
IDE: IntelliJ 11.1
App-Server: JBoss 5.1.0 EAP
EAR-Building with „maven-ear-plugin“
WAR-Building with Maven „<packaging>war</packaging>“
EJB-Building with Maven „<packaging>ejb</packaging>“ und „maven-ejb-plugin“
EARは次のようになります。
xxx.ear
|___ META-INF
| |___ application.xml (Information about EAR, EJB und WEB-Modul configured)
|
|___ xxxEJB.jar
| |
| |___ META-INF
| | |___ persistance.xml (JPA 1.0 configuration)
| | |___ jboss.xml (JBoss-Config)
| | |___ ejb-jar.xml (EJB 3.0 definition)
| |
| |___ country/yyy/xxx/.. (our own compiled classes)
| |___ report/.. (JasperReport-Tamplates)
| |___ quickfix/.. (QuickFixJ-configuration)
| |___ all dependent libraries for our EJB 3.0 project, (74-jar-files)
|
|___ xxxWAR.war
|
|___ META-INF
|___ WEB-INF
|
|___ lib
| |___ all dependent libraries for the Servlet-project, (2-jar-files)
|___ classes
| |___ country/yyy/xxx/.. (our own compiled classes)
|___ web.xml (Servlet-configuration)
Stacktraceは次のようになります。
JVMは、すべてのクラスローディングアクションを表示するためのオプション-verbose:classで開始されています。
--- SNIP JBoss-Log ---
[Loaded country.yyy.xxx.service.issue.util.IssueUtil from file:/C:/Workarea/Projects/xxx-trunk/xxx/target/classes/]
[Loaded org.joda.time.DateTimeZone from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.Chronology from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.chrono.BaseChronology from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.DateTimeZone$1 from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.tz.NameProvider from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.JodaTimePermission from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.tz.Provider from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.tz.FixedDateTimeZone from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
[Loaded org.joda.time.tz.ZoneInfoProvider from jar:file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear!/xxxEJB.jar]
ERROR - javax.ejb.EJBTransactionRolledbackException: Unexpected Error
java.lang.NoClassDefFoundError: org/joda/time/tz/DefaultNameProvider
at org.joda.time.DateTimeZone.getDefaultNameProvider(DateTimeZone.java:545)
at org.joda.time.DateTimeZone.setNameProvider0(DateTimeZone.java:515)
at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:116)
at country.yyy.xxx.service.issue.util.InitialFixingDateTimeUtil.getHedgingTimestampsForIssue(InitialFixingDateTimeUtil.java:83)
at country.yyy.xxx.service.issue.util.InitialFixingDateTimeUtil.getFirstHedgingTimestampForIssue(InitialFixingDateTimeUtil.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
--- SNAP JBoss-Log ---
ファイル「org/joda / time / tz / DefaultNameProvider」は間違いなくjarファイルjar:file:/ C:/Workarea/Projects/xxx-trunk/xxx- ear / target / xxx.ear!/xxxEJB.jarにあります
提案:
クォーツはそれと関係があると感じています。したがって、何かがスケジュールされたとき、EJB3.0Remote-Stateless-Serviceから。エラーが発生することがあります。
Quartz-Schedulerは、最初はServlet-Contextで作成されますが、ほとんどの場合は正常に機能します。
誰かが同じ問題を抱えていましたか?
JBossのデプロイメントは、IntelliJJBossプラグインを介して行われます。
問題は、使用している展開メカニズムが原因である可能性がありますか?intelliJ JBoss Pluginを使用してアプリケーションをデプロイするため、JBossは次のように述べています。
09:39:21,614 INFO [MainDeployer] deploy, url=file:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear
09:39:33,613 INFO [Ejb3DependenciesDeployer] Encountered deployment AbstractVFSDeploymentContext@2726974{vfszip:/C:/Workarea/Projects/xxx-trunk/xxx-ear/target/xxx.ear/xxxEJB.jar/}