로터스 노트:Java는 에이전트에서는 제대로 실행되지만 Java lib에서는 실패합니다.

StackOverflow https://stackoverflow.com//questions/22051912

문제

웹 서비스 소비자를 만들었습니다.이름이 지정된 메서드를 호출하고 싶습니다. setCredentials 그러면 내 인증 정보를 서비스에 전달할 수 있습니다.

웹 서비스 소비자, 에이전트 및 Java 라이브러리를 가져오는 두 개의 엔터티가 있으며 LotusScript에서 호출됩니다.

이상한 점은 내 에이전트에서는 모든 것이 잘 작동한다는 것입니다.라이브러리는 정상적으로 컴파일되지만 LotusScript에서 실행되어 해당 라인에 도달하면stub.setCredentials("xxxx","ttttt");자바는 java.lang.nosuchmethod 오류.내가 뭘 잘못하고 있는 걸까요?

도움을 주셔서 미리 감사드립니다.

업데이트:

어쩌면 내가 완전히 설명하지 않았을 수도 있습니다.작업은 Java 내부에서 완전히 발생합니다.이것은 일종의 테스트입니다.LotusScript에서는 GetClass/CreateObject 시퀀스를 사용하여 생성자를 호출하고 있습니다.코드는 생성자 내부에 있습니다(테스트용).그리고 내 테스트 에이전트와 Java 라이브러리 모두에서 정확하게 동일해 보입니다.귀하의 질문에 대답하는 Jason, no, setCredentials는 특정 lotus.domino.types.PortTypeBase 인터페이스의 일부입니다.웹 서비스 소비자를 생성하기 위해 .wsdl을 사용할 때 생성된 .java 파일에서 내 인터페이스가 portTypeBase 및 Remote를 확장한다는 것을 볼 수 있습니다.

도움이 되었습니까?

해결책

LotusScript(LS2J)에서는 Java 웹 서비스 소비자를 호출할 수 없습니다.이에 대해서는 SPR에 자세히 설명되어 있습니다. SODY7UDKE8 / APAR LO42772.이는 Java 소비자를 호출하는 Java 에이전트를 호출하는 경우에도 적용됩니다.

LotusScript에서 웹 서비스에 액세스하려면 LotusScript 소비자를 생성해야 합니다.그러나 LotusScript에는 일부 웹 서비스가 사용되지 않도록 할 수 있는 알려진 제한 사항이 있습니다.

  • 40자 변수/메소드 제한
  • 매우 큰 SOAP 메시지는 성능/충돌 문제를 일으킬 수 있습니다.
  • LS/WSDL/SOAP에서 예약된 키워드가 일치하지 않습니다.

즉, 다음과 같은 샘플 공급자를 만들었습니다.

Class wsClass 
    Function hello ( helloText As String) As String
        hello = "Hello " + helloText
    End Function
End Class

NSF에는 인증된 사용자만 허용하도록 설정되어 저장되어 있습니다.

그런 다음 생성된 WSDL에서 LS 소비자 및 Java 소비자 라이브러리를 만들었습니다.

그 후 다음 샘플 코드를 만들었습니다.

로터스스크립트

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

자바 (에이전트에 소비자 라이브러리 추가)

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();
       }
   }
}

이 두 가지 모두 해당 소비자와 예상대로 작동했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top