以下ではJavaクラスからIDLに変換した際に、EJBアプリケーションの配備でエラーとなる例について説明します。
変換規則適用後、メソッド名が重なる例
エラーが発生した場合は、前項の変換規則や、本項のエラー事例を参考にしながら、下記のポイントをチェックして対処してください。
エラーとなったキーワードを含むJavaアプリケーションを確認してください。
変換規則の説明をもとに名前が重複する可能性がないかを確認してください。
変換規則適用後、クラス名が重なる例
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
D:\EJB\deployment\work\EB0919350001\pack001\_FJclass002RemoteImpl_Tie.java:74: この型は declaration には不適合です。pack001.J_under から pack001._under には変換できません。
pack001._under _result = _target.meth001();
エラー 2 個
public pack001.J_under meth001() throws java.rmi.RemoteException;
public pack001._under meth002() throws java.rmi.RemoteException;
::pack001::J_under meth001();
::pack001::J_under meth002();
クラス名“_under”が“J_under”に変換された結果、クラス名が重複しました。
変換規則適用後、メソッド名が重なる例(適用した変換規則:4)
4
FJJ2IDL0003S 変名後のメソッド名と同名のメソッドが定義されています。 InterfaceName = pack.test007Remote MethodName = foo__long
public void foo() throws java.rmi.RemoteException;
public void foo(int x) throws java.rmi.RemoteException;
public void foo__long() throws java.rmi.RemoteException;
エラーが発生したためIDLは出力されません。
メソッド“foo”がオーバーロードされたために変換され、メソッド“foo_long”と名前が重複しました。
4
<D4105S-02-002-1701> 展開処理中に異常が発生しました。
詳細メッセージに従い対処してください。
<D4298S-04-010-0307> IDLcでエラーを検出しました。
IDLc -roi -info"D:\EJB\deployment\work\EB1558300003\j2idl.xml" -I"D:\EJB\deployment\idl" -I"D:\EJB\deployment\work\EB1558300003" "D:\EJB\deployment\work\EB1558300003\pack\test001Home.idl"
OD: エラー: od51116:IDLroijavacg:aU0024bは識別子として二重定義されました。
OD: エラー: od51221:IDLc:IDLroijavacgコマンドエラー. エラーコード=4
// pack.Exclass001
package pack;
public interface Exclass001 {
public int a$b(int param1, int param2) throws java.rmi.RemoteException;
}
// pack.test001Remote
package pack;
import java.rmi.*;
import javax.ejb.*;
public interface test001Remote extends javax.ejb.EJBObject,Exclass001 {
public int aU0024b(int param1, int param2) throws java.rmi.RemoteException;
}
//pack/Exclass001.idl
module pack{
abstract interface Exclass001 {
long aU0024b(
in long arg0,
in long arg1);
};
#pragma ID Exclass001 "RMI:pack.Exclass001:0000000000000000"
};
//pack/test001Remote.idl
module pack{
interface test001Remote: ::javax::ejb::EJBObject, ::pack::Exclass001 {
long aU0024b(
in long arg0,
in long arg1);
};
#pragma ID test001Remote "RMI:pack.test001Remote:0000000000000000"
};
継承元のメソッド“a$b”が“aU0024b”に変換されて、継承先のメソッド“aU0024”と名前が重複しました。
変換規則適用後、メソッド名が重なる例(適用した変換規則:7)
7
<D4105S-02-002-1701> 展開処理中に異常が発生しました。
詳細メッセージに従い対処してください。
<D4298S-04-010-0307> IDLcでエラーを検出しました。
IDLc -roi -info"D:\EJB\deployment\work\EB1339510001\j2idl.xml" -I"D:\EJB\deployment\idl" -I"D:\EJB\deployment\work\EB1339510001" "D:\EJB\deployment\work\EB1339510001\pack002\meth001Home.idl"
OD: エラー: od51116:IDLroijavacg:meth1_は識別子として二重定義されました。
OD: エラー: od51221:IDLc:IDLroijavacgコマンドエラー. エラーコード=4
//pack002.meth001Remote
package pack002;
public interface meth001Remote extends SubRemote,javax.ejb.EJBObject {
public void meth1() throws java.rmi.RemoteException;
public void meth1(long param1) throws java.rmi.RemoteException;
}
//pack002.SubRemote
package pack002;
public interface SubRemote extends java.rmi.Remote {
public void meth1() throws java.rmi.RemoteException;
public void meth1(int param1,int param2) throws java.rmi.RemoteException;
}
//pack002/meth001Remote.idl
module pack002{
interface meth001Remote: ::pack002::SubRemote, ::javax::ejb::EJBObject {
void meth1__();
void meth1__long_long(
in long long arg0);
};
#pragma ID meth001Remote "RMI:pack002.meth001Remote:0000000000000000"
};
//pack002/SubRemote.idl
module pack002{
interface SubRemote {
void meth1__();
void meth1__long__long(
in long arg0,
in long arg1);
};
#pragma ID SubRemote "RMI:pack002.SubRemote:0000000000000000"
};
継承元と継承先でそれぞれメソッド名が変換されて、メソッド名が重複しました。
7
<D4105S-02-002-1701> 展開処理中に異常が発生しました。
詳細メッセージに従い対処してください。
<D4298S-04-010-0307> IDLcでエラーを検出しました。
IDLc -roi -info"D:\EJB\deployment\work\EB1523460001\j2idl.xml" -I"D:\EJB\deployment\idl" -I"D:\EJB\deployment\work\EB1523460001" "D:\EJB\deployment\work\EB1523460001\pack002\method003Home.idl"
OD: エラー: od51116:IDLroijavacg:method1_は識別子として二重定義されました。
OD: エラー: od51221:IDLc:IDLroijavacgコマンドエラー. エラーコード=4
// pack002.Subclass1
package pack002;
public interface Subclass1 extends java.rmi.Remote {
public void method1() throws java.rmi.RemoteException;
}
// pack002.Subclass2
package pack002;
public interface Subclass2 extends Subclass1 {
public void method1() throws java.rmi.RemoteException;
}
// pack002. method003Remote
package pack002;
public interface method003Remote extends Subclass2,javax.ejb.EJBObject {
public void method1() throws java.rmi.RemoteException;
}
// pack002/Subclass1.idl
module pack002{
interface Subclass1 {
void method1();
};
#pragma ID Subclass1 "RMI:pack002.Subclass1:0000000000000000"
};
// pack002/Subclass2.idl
module pack002{
interface Subclass2: ::pack002::Subclass1 {
void method1__();
};
#pragma ID Subclass2 "RMI:pack002.Subclass2:0000000000000000"
};
// pack002/method003Remote.idl
module pack002{
interface method003Remote: ::pack002::Subclass2, ::javax::ejb::EJBObject {
void method1__();
};
#pragma ID method003Remote "RMI:pack002.method003Remote:0000000000000000"
};
継承元と継承先でそれぞれメソッド名が変換されて、メソッド名が重複しました。
変換規則適用後、フィールド名と他の識別子名とが重複する例
7
FJJ2IDL0005S 変名後のフィールド名と同名のフィールドが定義されています。 ClassName = pack.Valueclass FieldName = jack_
public int jack_;
public int jAcK;
public int jack;
エラーが発生したためIDLは出力されません。
定義されたフィールド“jAcK”と“jack”が大文字/小文字だけ違うため、“jack”が“jack_”と変換された結果、他のフィールド“jack_”と名前が重複しました。
変換規則適用後、attribute名と他の識別子名が重複する例
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
// 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;
}
// 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
public int getATTR() throws java.rmi.RemoteException;
public void setATTR(int param1) throws java.rmi.RemoteException;
public boolean isATTR() throws java.rmi.RemoteException;
エラーが発生したためIDLは出力されません。
“getATTR”メソッドと“setATTR”メソッドがattributeに変換され、“isATTR”メソッドもattributeに変換された結果、attribute名が重複しました。
22
FJJ2IDL0033S アトリビュート名と同名のメソッドが定義されています。 InterfaceName = pack.test011Remote AttributeName = ATTR__
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は出力されません。
“getATTR”メソッドと“setATTR”メソッドがattributeに変換され、“ATTR”メソッドとattribute名が重複したため、語尾に“__”を付加した結果、“ATTR__”メソッドと名前が重複しました。
変換規則適用後、例外名(exception)が重複する例
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
public void meth001() throws TestExException, TestEx, java.rmi.RemoteException;
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 個
public void meth001() throws TestEx, java.rmi.RemoteException;
public void meth002() throws TestExException, java.rmi.RemoteException;
void meth001() raises(
::pack001::TestExEx);
void meth002() raises(
::pack001::TestExEx);
例外クラスの“TestExException”が“TestExEx”にマッピングされ、“TestEx”が“TestExEx”に変換された結果、例外名が重複しました。