Лотос Ноты:Java работает нормально, когда работает с агентом, но терпит неудачу, когда работает с библиотекой java

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

Вопрос

Я создал потребителя веб-сервиса.Я хочу вызвать метод, который называется setCredentials таким образом, я могу передать свою аутентификационную информацию службе.

У меня есть две сущности, которые импортируют потребителя веб-службы, агент и библиотеку java, предназначенные для вызова из LotusScript.

Самое странное, что у моего агента все работает нормально.Библиотека компилируется нормально, но когда она выполняется из LotusScript и достигает этой строки stub.setCredentials("xxxx","ttttt"); Java выдает java.lang.nosuchmethod ошибка.Что я могу делать не так?

Заранее большое вам спасибо за вашу помощь.

Обновить:

Может быть, я не совсем все объяснил.Действие происходит полностью внутри java.Это своего рода тест.В LotusScript я просто вызываю конструктор с последовательностью getClass/CreateObject .Код находится внутри конструктора (для удобства тестирования).И это выглядит точно так же, как в моем тестовом агенте, так и в библиотеке java.Отвечая на твой вопрос, Джейсон, нет, setCredentials является частью определенного интерфейса lotus.domino.types.PortTypeBase.Когда я использую .wsdl для создания потребителя веб-службы, я вижу из сгенерированных файлов .java, что мой интерфейс расширяет базу типов портов и удаленный

Это было полезно?

Решение

Невозможно вызвать потребителя веб-службы Java из LotusScript (LS2J).Это подробно описано в 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, где он был сохранен, я настроил его так, чтобы разрешать только аутентифицированным пользователям.

Затем я создал потребительские библиотеки LS и Java из сгенерированного WSDL.

После этого я создал следующий пример кода.

Лотосный скрипт

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

Оба они работали, как и ожидалось, со своим собственным потребителем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top