Interstage Application Server J2EE ユーザーズガイド |
目次 索引 |
第3部 EJB編 | > 第14章 EJBアプリケーションの呼出し方法 | > 14.10 IDL変換規則に関する補足資料 |
以下ではJavaクラスからIDLに変換した際に、EJBアプリケーションの配備でエラーとなる例について説明します。
適用した変換規則 |
3 |
エラーメッセージ例 |
D:\EJB\deployment\work\EB0919350001\pack001\_class002Remote_Stub.java:37: class pack001._class002Remote_Stub で宣言されたメソッド pack001._under meth001() は、interface pack001.class002Remote で宣言された同じシグニチャーのメソッドをオーバーライドできません。同じ型の戻り値を持たなければなりません。 public pack001._under meth001() throws RemoteException pack001._under _result = _target.meth001(); |
Java記述例 |
public pack001.J_under meth001() throws java.rmi.RemoteException; |
IDLマッピング例 |
::pack001::J_under meth001(); |
エラー原因 |
クラス名“_under”が“J_under”に変換された結果、クラス名が重複しました。 |
4 |
|
エラーメッセージ例 |
FJJ2IDL0003S 変名後のメソッド名と同名のメソッドが定義されています。 InterfaceName = pack.test007Remote MethodName = foo__long |
Java記述例 |
public void foo() throws java.rmi.RemoteException; public void foo(int x) throws java.rmi.RemoteException; |
IDLマッピング例 |
エラーが発生したためIDLは出力されません。 |
エラー原因 |
メソッド“foo”がオーバーロードされたために変換され、メソッド“foo_long”と名前が重複しました。 |
適用した変換規則 |
4 |
エラーメッセージ例 |
<D4105S-02-002-1701> 展開処理中に異常が発生しました。 |
Java記述例 |
// pack.Exclass001 public interface Exclass001 // pack.test001Remote import javax.ejb.*; |
IDLマッピング例 |
//pack/Exclass001.idl long aU0024b( #pragma ID Exclass001 "RMI:pack.Exclass001:0000000000000000" //pack/test001Remote.idl in long arg0, in long arg1); #pragma ID test001Remote "RMI:pack.test001Remote:0000000000000000" |
エラー原因 |
継承元のメソッド“a$b”が“aU0024b”に変換されて、継承先のメソッド“aU0024”と名前が重複しました。 |
7 |
|
エラーメッセージ例 |
<D4105S-02-002-1701> 展開処理中に異常が発生しました。 詳細メッセージに従い対処してください。 <D4298S-04-010-0307> IDLcでエラーを検出しました。 |
Java記述例 |
//pack002.meth001Remote package pack002; public interface meth001Remote extends SubRemote,javax.ejb.EJBObject //pack002.SubRemote public interface SubRemote extends java.rmi.Remote |
IDLマッピング例 |
//pack002/meth001Remote.idl void meth1__long_long( #pragma ID meth001Remote "RMI:pack002.meth001Remote:0000000000000000" //pack002/SubRemote.idl #pragma ID SubRemote "RMI:pack002.SubRemote:0000000000000000" |
エラー原因 |
継承元と継承先でそれぞれメソッド名が変換されて、メソッド名が重複しました。 |
適用した変換規則 |
7 |
エラーメッセージ例 |
<D4105S-02-002-1701> 展開処理中に異常が発生しました。 <D4298S-04-010-0307> IDLcでエラーを検出しました。 |
Java記述例 |
// pack002.Subclass1 public interface Subclass1 extends java.rmi.Remote // pack002.Subclass2 // pack002. method003Remote public interface method003Remote extends Subclass2,javax.ejb.EJBObject |
IDLマッピング例 |
// pack002/Subclass1.idl interface Subclass1 { #pragma ID Subclass1 "RMI:pack002.Subclass1:0000000000000000" // pack002/Subclass2.idl #pragma ID Subclass2 "RMI:pack002.Subclass2:0000000000000000" // pack002/method003Remote.idl
#pragma ID method003Remote "RMI:pack002.method003Remote:0000000000000000" |
エラー原因 |
継承元と継承先でそれぞれメソッド名が変換されて、メソッド名が重複しました。 |
7 |
|
エラーメッセージ例 |
FJJ2IDL0005S 変名後のフィールド名と同名のフィールドが定義されています。 ClassName = pack.Valueclass FieldName = jack_ |
Java記述例 |
public int jack_; public int jAcK; public int jack; |
IDLマッピング例 |
エラーが発生したためIDLは出力されない。 |
エラー原因 |
定義されたフィールド“jAcK”と“jack”が大文字/小文字だけ違うため、“jack”が“jack_”と変換された結果、他のフィールド“jack_”と名前が重複しました。 |
適用した変換規則 |
22 |
エラーメッセージ例 |
<D4105S-02-002-1701> 展開処理中に異常が発生しました。 詳細メッセージに従い対処してください。 <D4298S-04-010-0307> IDLcでエラーを検出しました。 IDLc -roi -info"D:\EJB\deployment\work\EB1711200001\j2idl.xml" -I"D:\EJB\deployment\idl" -I"D:\EJB\deployment\work\EB1711200001" "D:\EJB\deployment\work\EB1711200001\pack\test002Home.idl" OD: エラー: od51116:IDLroijavacg:ATTRは識別子として二重定義されました。 OD: エラー: od51221:IDLc:IDLroijavacgコマンドエラー. エラーコード=4 |
Java記述例 |
// pack.ExIntf002 package pack; public interface ExIntf002 extends java.rmi.Remote { public int getATTR() throws java.rmi.RemoteException; } // pack.test002Remote package pack; import java.rmi.*; import javax.ejb.*; public interface test002Remote extends javax.ejb.EJBObject,ExIntf002 { public void ATTR() throws java.rmi.RemoteException; } |
IDLマッピング例 |
// pack/ExIntf002.idl module pack{ interface ExIntf002 { readonly attribute long ATTR; }; #pragma ID ExIntf002 "RMI:pack.ExIntf002:0000000000000000" }; // pack/test002Remote module pack{ interface test002Remote: ::javax::ejb::EJBObject, ::pack::ExIntf002 { void ATTR(); }; #pragma ID test002Remote "RMI:pack.test002Remote:0000000000000000" }; |
エラー原因 |
継承元のメソッドがattributeに変換され、継承先のメソッドと名前が重複しました。 |
適用した変換規則 |
22 |
エラーメッセージ例 |
FJJ2IDL0032S 同名のアトリビュートが定義されています。 InterfaceName = pack.test010Remote AttributeName = ATTR |
Java記述例 |
public int getATTR() throws java.rmi.RemoteException; public void setATTR(int param1) throws java.rmi.RemoteException; public boolean isATTR() throws java.rmi.RemoteException; |
IDLマッピング例 |
エラーが発生したためIDLは出力されません。 |
エラー原因 |
“getATTR”メソッドと“setATTR”メソッドがattributeに変換され、“isATTR”メソッドもattributeに変換された結果、attribute名が重複しました。 |
適用した変換規則 |
22 |
エラーメッセージ例 |
FJJ2IDL0033S アトリビュート名と同名のメソッドが定義されています。 InterfaceName = pack.test011Remote AttributeName = ATTR__ |
Java記述例 |
public long getATTR() throws java.rmi.RemoteException; public void setATTR(long param1) throws java.rmi.RemoteException; public void ATTR() throws java.rmi.RemoteException; public void ATTR__() throws java.rmi.RemoteException; |
IDLマッピング例 |
エラーが発生したためIDLは出力されません。 |
エラー原因 |
“getATTR”メソッドと“setATTR”メソッドがattributeに変換され、“ATTR”メソッドとattribute名が重複したため、語尾に“__”を付加した結果、“ATTR__”メソッドと名前が重複しました。 |
適用した変換規則 |
41 |
エラーメッセージ例 |
<D4105S-02-002-1701> 展開処理中に異常が発生しました。 詳細メッセージに従い対処してください。 <D4296S-04-010-0305> IDLcでシンタックスエラーを検出しました。 IDLc -roi -info"D:\EJB\deployment\work\EB0936420001\j2idl.xml" -I"D:\EJB\deployment\idl" -I"D:\EJB\deployment\work\EB0936420001" "D:\EJB\deployment\work\EB0936420001\pack001\class003Home.idl" "D:\EJB\deployment\work\EB0936420001\pack001/class003Remote.idl", OD: エラー: od51108:IDLejbparser:raises句で::pack001::TestExEx例外が二重定義されました。 FILE=D:\EJB\deployment\work\EB0936420001\pack001/class003Remote.idl LINE=17 OD: エラー: od51240:IDLejbparser:致命的エラーが発見されました。 エラー数 = 1 OD: エラー: od51221:IDLc:IDLejbparserコマンドエラー. エラーコード=2 |
Java記述例 |
public void meth001() throws TestExException, TestEx, java.rmi.RemoteException; |
IDLマッピング例 |
void meth001() raises( ::pack001::TestExEx, ::pack001::TestExEx); |
エラー原因 |
例外クラスの“TestExException”が“TestExEx”にマッピングされ、“TestEx”が“TestExEx”に変換された結果、例外名が重複しました。 |
適用した変換規則 |
41 |
エラーメッセージ例 |
D:\EJB\deployment\work\EB0946180001\pack001\_class004Remote_Stub.java:69: class pack001._class004Remote_Stub で宣言されたメソッド void meth002() は、interface pack001.class004Remote で宣言された同じシグニチャーのメソッドをオーバーライドできません。それらの throws 節には互換性がありません。 Public void meth002() throws RemoteException, pack001.TestEx ^ D:\EJB\deployment\work\EB0946180001\pack001\_FJclass004RemoteImpl_Tie.java:96: 例外 pack001.TestEx は対応する try 文の本体でスローされることはありません。 catch (pack001.TestEx _exp){ ^ エラー 2 個 |
Java記述例 |
public void meth001() throws TestEx, java.rmi.RemoteException; public void meth002() throws TestExException, java.rmi.RemoteException; |
IDLマッピング例 |
void meth001() raises( ::pack001::TestExEx); void meth002() raises( ::pack001::TestExEx); |
エラー原因 |
例外クラスの“TestExException”が“TestExEx”にマッピングされ、“TestEx”が“TestExEx”に変換された結果、例外名が重複しました。 |
上記で説明したような変換規則やエラー事例を参考にしながら、下記のポイントをチェックして対処してください。
変換規則の説明をもとに名前が重複する可能性がないかを確認してください。
目次 索引 |