Lotus Notes:エージェント上にあるときはjavaがFineを実行しますが、Java libのときに失敗します。
-
21-12-2019 - |
質問
私はWebサービスコンシューマを作成しました。
setCredentials
という名前のメソッドを呼び出して、認証情報をサービスに渡すことができます。
LotusScriptから呼び出されることを意味するWebサービスコンシューマ、エージェント、およびJavaライブラリをインポートする2つのエンティティがあります。
奇妙なことは私の代理人にすべてがうまくいくということです。ライブラリはOKをコンパイルしますが、LotusScriptから実行されてその行に達すると
stub.setCredentials("xxxx","ttttt");
Javaはjava.lang.nosuchmethod
エラーをスローします。何が悪いことができますか?
あなたの助けのためにあってくれてありがとう。
更新:
多分私は完全に説明しなかった。アクションはJava内部に完全に発生します。これはテストの種類です。 LotusScriptでは、シーケンスgetClass / createObjectを指定してコンストラクタを呼び出すだけです。コードはコンストラクタの内側にあります(テストのために)。そしてそれは私のテストエージェントとJavaライブラリの両方で同じで同じように見えます。あなたの質問に答える、Jason、No、SetCredentialsは特定のlotus.domino.types.portTypeBaseインターフェースの一部です。 Webサービスコンシューマを作成するために.wsdlを消費するとき、私のインタフェースはPortTypeBaseとRemote
を拡張する生成された.javaファイルから参照できます。解決
LotusScript(LS2J)からJava Webサービスコンシューマを呼び出すことはできません。これは、spr sody7udke8 / apar lo42772 。これは、Javaエージェントを呼び出すことにも適用されます。これは、Java Consumerを呼び出す。
LotusScriptでWebサービスにアクセスするためにLotusScriptコンシューマを作成する必要があります。ただし、LotusScriptには、Webサービスが消費されないようにすることができるLotusScriptには既知の制限があります。
- 40文字変数/メソッドlimit
- 非常に大きな石鹸メッセージは、パフォーマンス/クラッシュの問題を引き起こす可能性があります。
- LS / WSDL / SOAPのrequervedキーワードの不一致。
は、次のサンプルプロバイダを作成しました。
Class wsClass
Function hello ( helloText As String) As String
hello = "Hello " + helloText
End Function
End Class
.
NSFでは保存されていましたが、認証されたユーザーのみを許可するように設定します。
生成されたWSDLからLSコンシューマおよびJavaコンシューマライブラリを作成しました。
その後、次のサンプルコードを作成しました。
LotusScript
Use "LsWebServiceConsumer"
Sub Initialize
Dim stub As New Wsclass
Dim answer As String
Call stub.Setcredentials("testuser", "password")
answer = stub.Hello("world")
MsgBox answer
End Sub
.
java (エージェントへの消費者ライブラリを追加)
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
WsClass stub = new WsClassServiceLocator().getDomino();
stub.setCredentials("testuser", "password");
System.out.println(stub.HELLO("world"));
} catch(Exception e) {
e.printStackTrace();
}
}
}
.
これらの両方がそれぞれ独自の消費者で予想通りに働いた。