- PR -

weblogicのデプロイ時エラーについて

1
投稿者投稿内容
JUN
会議室デビュー日: 2004/08/31
投稿数: 9
投稿日時: 2004-08-31 11:03
はじめまして。

unixで動作しているweblogic server (6.1)に
新しくドメインを追加して使用したいと思っています。
手順どおりに行い、サーバの起動までは出来るようになったのですが、
コンソール画面でデプロイを行おうとすると以下のエラーとなります。

--------------------------------------------------------------------------------
Unable to deploy EJB: Wbcm0020 from Wbcm0020.jar:

There is a mismatch between the bean code and generated code.wbcm0020.Wbcm0020Home . Please rerun ejbc on the bean code.The error was java.lang.NoSuchFieldException
at java.lang.Class.getField0(Native Method)
at java.lang.Class.getDeclaredField(Class.java:1113)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.setMDField(ClientDrivenBeanInfoImpl.java:650)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.setMethodDescriptors(ClientDrivenBeanInfoImpl.java:722)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.deploy(ClientDrivenBeanInfoImpl.java:812)
at weblogic.ejb20.deployer.Deployer.deployDescriptor(Deployer.java:1226)
at weblogic.ejb20.deployer.Deployer.deploy(Deployer.java:939)
at weblogic.j2ee.EJBComponent.deploy(EJBComponent.java:30)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:144)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:608)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:592)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:352)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBeans(ConfigurationMBeanImpl.java:484)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:354)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy13.addDeployment(Unknown Source)
at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(DynamicMBeanImpl.java:1448)
at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:858)
at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:810)
at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(ConfigurationMBeanImpl.java:288)
at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1356)
at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1331)
at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:303)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy8.setTargets(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.console.info.MBeanAttribute.doSet(MBeanAttribute.java:83)
at weblogic.management.console.info.MBeanReferenceAttribute.addToArrayAttribute(MBeanReferenceAttribute.java:234)
at weblogic.management.console.info.MBeanReferenceAttribute.doSet(MBeanReferenceAttribute.java:121)
at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:116)
at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:167)
at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2456)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2039)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)

--------------- nested within: ------------------
weblogic.management.DistributedOperationUpdateException:

Unable to deploy EJB: Wbcm0020 from Wbcm0020.jar:

There is a mismatch between the bean code and generated code.wbcm0020.Wbcm0020Home . Please rerun ejbc on the bean code.The error was java.lang.NoSuc
hFieldException
at java.lang.Class.getField0(Native Method)
at java.lang.Class.getDeclaredField(Class.java:1113)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.setMDField(ClientDrivenBeanInfoImpl.java:650)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.setMethodDescriptors(ClientDrivenBeanInfoImpl.java:722)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.deploy(ClientDrivenBeanInfoImpl.java:812)
at weblogic.ejb20.deployer.Deployer.deployDescriptor(Deployer.java:1226)
at weblogic.ejb20.deployer.Deployer.deploy(Deployer.java:939)
at weblogic.j2ee.EJBComponent.deploy(EJBComponent.java:30)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:144)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:608)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:592)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:352)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBeans(ConfigurationMBeanImpl.java:484)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:354)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy13.addDeployment(Unknown Source)
at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(DynamicMBeanImpl.java:1448)
at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:858)
at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:810)
at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(ConfigurationMBeanImpl.java:288)
at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1356)
at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1331)
at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:303)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy8.setTargets(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.console.info.MBeanAttribute.doSet(MBeanAttribute.java:83)
at weblogic.management.console.info.MBeanReferenceAttribute.addToArrayAttribute(MBeanReferenceAttribute.java:234)
at weblogic.management.console.info.MBeanReferenceAttribute.doSet(MBeanReferenceAttribute.java:121)
at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:116)
at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:167)
at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2456)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2039)
at weblogic.kernel.ExecuteThread.execu>
--------------------------------------------------------------------------------
ログが長く見苦しくなってしまい申し訳ありません。

このようなエラーが出る原因としてどのようなことが考えられるのかを
ご存知の方がいれば教えていただきたいと思っています。

よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-08-31 11:24
商用製品を使用するにあたって発生した現象ですのでご購入先のサポート窓口にお問い合わせすることをお勧めいたします。せっかくサポートフィーを払っているんですから活用しない手はありません。

さて、リフレクションの例外がでていますのでクラスパス関連の問題ではないかと思います。システムクラスパスに EJB jar が通っていたりしませんか?
このような現象はサービスパックの違う weblogic.jar でコンパイルした EJB jar をシステムクラスパスに通した場合に発生します。WLS は自動的に起動しているバージョンとコンパイルを行ったバージョンを比較して、必要に応じて動的にコンパイルを行います。このときに生成したクラスを読み込む必要があるのですが、システムクラスパスに古い EJB jar が入っていると新しいクラスを読み込めないためクラスの定義に矛盾が生じて NoSuchMethod/FieldException 等が発生するのです。

コンパイルを行う環境は実行環境とサービスパックのレベルを合わせ(最新はSP6)、アプリケーションは適切に EAR にパッケージを行い、EJB jar はシステムクラスパスに通さないようにしましょう。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-08-31 11:29 ]
JUN
会議室デビュー日: 2004/08/31
投稿数: 9
投稿日時: 2004-09-01 13:34
返信が遅くなってしまいました。
申し訳ありません。

結局、実行環境とコンパイル環境のサービスパックを合わせることで
デプロイについては解決することが出来ました。

ありがとうございます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-09-01 14:14
ちなみにシステムクラスパスに EJB jar を通したままですと再デプロイを行うことが出来ません。
システムクラスローダで読み込んだクラスは再ロードすることができないからです。
せっかくの WebLogic の可用性を大きく損ねることになりますのでこれを機に ear にパッケージしてシステムクラスパスから外してデプロイすることをお勧め致します。
1

スキルアップ/キャリアアップ(JOB@IT)