3

私は最近、language 属性を使用して、クラスで Java メソッドを使用できることを読みました。

私はこれを試しました:

Method JavaTest() As %String [ Language = java, WebMethod ]
{
    string tmp = "Hello World";
    return tmp;
}

コードはコンパイルされますが、メソッドが呼び出されるとエラーが返されます。

ERROR #5002: Cache error: <METHOD DOES NOT EXIST>
4

2 に答える 2

2

実際、%Projection クラスは Cache クラスJava に投影するためのものです。これらは、Java プロジェクトで使用できる Java プロキシ クラスを生成します。

Java クラスとメソッドを使用するには、キャッシュではなく Ensemble と AFAIK の一部である Java ゲートウェイが必要です。

于 2012-10-14T20:12:20.247 に答える
2

私が知る限り、この機能は、%Projection.Java クラスを使用して Cache から Java クラスを作成する場合のために存在します。いずれにせよ、Java プロジェクションを使用すると、メソッドは作成された Java クラスに実際に投影されます。

Class SomePackage.JavaTest Extends %Persistent
{

Method JavaTestyTest() As %String [ Language = java, WebMethod ]
{
    string tmp = "Hello World";
    return tmp;
}
Method bleh() as %Library.String
{
    q "bleh"
}
Projection NewProjection1 As %Projection.Java(ROOTDIR = "C:\trans");

}

すべてを表示するにはあまりにも多くのJavaを生成しますが、含まれています

public java.lang.String JavaTestyTest () {
       string tmp = "Hello World";
       return tmp;
}

public java.lang.String bleh () throws com.intersys.objects.CacheException {
    com.intersys.cache.Dataholder[] args = new com.intersys.cache.Dataholder[0];
    com.intersys.cache.Dataholder res=mInternal.runInstanceMethod("bleh",args,com.intersys.objects.Database.RET_PRIM);
    return res.getString();
}
于 2012-10-12T17:35:05.190 に答える