Notas de loto:Java funciona bien cuando está en un agente, pero falla cuando está en una biblioteca de Java

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

Pregunta

Creé un consumidor de servicios web.Quiero llamar a un método que se llama. setCredentials para poder pasar mi información de autenticación al servicio.

Tengo dos entidades que importan el consumidor del servicio web, un agente y una biblioteca Java, que deben llamarse desde LotusScript.

Lo extraño es que en mi agente todo funciona bien.La biblioteca se compila bien, pero cuando se ejecuta desde LotusScript y llega a esa líneastub.setCredentials("xxxx","ttttt");Java lanza un java.lang.nosuchmethod error.¿Qué puedo estar haciendo mal?

Muchas gracias de antemano por tu ayuda.

Actualizar:

Quizás no lo expliqué completamente.La acción ocurre completamente dentro de java.Esto es una especie de prueba.En LotusScript simplemente estoy llamando al constructor con la secuencia GetClass/CreateObject.El código está dentro del constructor (por motivos de prueba).Y se ve exactamente igual, tanto en mi agente de prueba como en la biblioteca de Java.Respondiendo a tu pregunta, Jason, no, setCredentials es parte de cierta interfaz lotus.domino.types.PortTypeBase.Cuando consumo el .wsdl para crear un consumidor de servicios web, puedo ver en los archivos .java generados que mi interfaz extiende portTypeBase y Remote

¿Fue útil?

Solución

No es posible llamar a un consumidor de servicio web de Java desde LotusScript (LS2J). Esto se detalla en SPR sody7udke8 / apar lo42772 . Esto también se aplica a llamar a un agente de Java, que a su vez llama a un consumidor Java.

Necesitará crear un consumidor de LotusScript para acceder al servicio web en LotusScript. Sin embargo, hay limitaciones conocidas en LotusScript, lo que puede evitar que se consuman algunos servicios web.

  • 40 caracteres variable / límite de método
  • Los mensajes de jabón extremadamente grandes pueden causar problemas de rendimiento / accidente.
  • Palabras clave reservadas Desajuste en LS / WSDL / SOAP.

Dicho esto, creé el siguiente proveedor de muestra.

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

En el NSF se almacenó, lo configura para permitir a los usuarios autenticados.

Luego creé una LS Consumer y Java Consumer Bibliotecas de la WSDL generada.

Después de eso, creé el siguiente código de muestra.

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 (Biblioteca de consumidores agregada al 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();
       }
   }
}

Ambos trabajados como se esperan con su propio consumidor respectivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top