Domanda

Ho creato un consumatore di servizi Web. Voglio chiamare un metodo denominato setCredentials in modo da poter passare le informazioni di autenticazione al servizio.

Ho due entità che importano il consumatore del servizio Web, un agente e una libreria Java, pensati per essere chiamati da LotusScript.

La cosa strana è che sul mio agente tutto funziona bene. La biblioteca compila OK, ma quando viene eseguita da LotusScript e raggiunge quella linea stub.setCredentials("xxxx","ttttt");. Java lancia un errore java.lang.nosuchmethod. Cosa posso sbagliare?

Grazie mille in anticipo per il tuo aiuto.

Aggiornamento:

Forse non ho spiegato pienamente. L'azione si verifica completamente all'interno di Java. Questo è una sorta di test. A LotusScript, sto solo chiamando il costruttore con la sequenza getclass / creatoObject. Il codice è all'interno del costruttore (per il test del test). E sembra precisamente lo stesso, sia sul mio agente di prova che sulla Biblioteca Java. Rispondere alla tua domanda, Jason, No, SetCredentials fa parte di una certa interfaccia Lotus.domino.Types.portTypeBase. Quando consumisco il .WSDL per creare un consumatore di servizi Web, posso vedere dai file .java generati che la mia interfaccia si estende PortTypeBase e remoto

È stato utile?

Soluzione

Non è possibile chiamare un consumatore di servizi Web Java Web da LotusScript (LS2J). Questo è dettagliato in spr sody7udke8 / APAR LO42772 . Questo vale anche per chiamare un agente Java che a sua volta chiama un consumatore Java.

È necessario creare un consumatore di LotusScript per accedere al servizio Web in LotusScript. Tuttavia ci sono limitazioni note a LotusScript che possono consumare alcuni servizi Web.

    .
  • 40 Carattere Variabile / Metodo Limit
  • I messaggi di sapone estremamente grandi possono causare problemi di prestazioni / crash.
  • Mancata corrispondenza delle parole chiave riservata in LS / WSDL / Sapone.

Detto quello che ho creato il seguente fornitore di campioni.

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

Nel NSF è stato memorizzato ho impostato per consentire solo agli utenti autenticati.

Ho quindi creato una librerie di consumatori di consumatori LS e Java dal WSDL generato.

Dopo aver creato il seguente codice di esempio.

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 (Aggiunta libreria dei consumatori all'agente)

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

Entrambi hanno funzionato come previsto con il proprio rispettivo consumatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top