1

簡単な Java コードから GWT RPC サービスを呼び出す必要があります。はい、これを読みました

Java から GWT RPC サービスを直接呼び出す

ただし、私の問題は、Web アプリケーション コードにアクセスできないことです (その一部を要求して取得することはできますが)。そのため、Java プロジェクトのビルド パスに追加することはできません。私がインターネットから読んだすべての情報は、正確に何をインポートする必要があるかについて明確ではありません. 問題は、サービスへの呼び出しを機能させるためにプロジェクトに含める必要がある最小値は何ですか (たとえば、syncproxy gwt を使用して)? コード内のクライアント インターフェイスを再定義するだけで十分ですか、それともコンパイル作業も行う必要がありますか?

編集:ローカルホストで実行されている既定の Web アプリを使用して、ローカルでいくつかのテストを行いました。新しい Java プロジェクトを作成し、同期および非同期サービス インターフェイスと、Web アプリの WAR フォルダーにある RPC シリアル化ポリシーをインポートしました。これは私のテストコードです

import com.gdevelop.gwt.syncrpc.SyncProxy;

public class serviceCall {

private static final String MODULE_BASE_URL = "http://127.0.0.1:8888/gwttestapp/";
private static final String SERVICE_NAME = "greet";

public static void main(String[] args) {

     GreetingService rpcService = (GreetingService) SyncProxy.newProxyInstance(GreetingService.class, MODULE_BASE_URL, SERVICE_NAME, "CB32CC2E454EE7E1088B2E29CEB44F84");
     String result = rpcService.greetServer("SyncProxy");
}
}

ただし、次の例外が発生するため、サーバーは RPC ポリシーを認識していないようです。

Exception in thread "main" com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: This application is out of date, please click the refresh button on your browser. ( Blocked attempt to access interface 'GreetingService', which is not implemented by 'com.apptesting.server.GreetingServiceImpl'; this is either misconfiguration or a hack attempt )
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.gdevelop.gwt.syncrpc.SyncClientSerializationStreamReader.instantiate(SyncClientSerializationStreamReader.java:746)
at com.gdevelop.gwt.syncrpc.SyncClientSerializationStreamReader.deserialize(SyncClientSerializationStreamReader.java:816)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119)
at com.gdevelop.gwt.syncrpc.RemoteServiceSyncProxy.doInvoke(RemoteServiceSyncProxy.java:204)
at com.gdevelop.gwt.syncrpc.RemoteServiceInvocationHandler.invoke(RemoteServiceInvocationHandler.java:193)
at com.sun.proxy.$Proxy0.greetServer(Unknown Source)
at serviceCall.main(serviceCall.java:11)

誰でも助けることができますか?

4

1 に答える 1