O Lotus Notes:Java é Executado correctamente quando o Agente, mas falha quando em uma lib em java
-
21-12-2019 - |
Pergunta
Eu criei um Consumidor de Serviço da Web.Eu quero chamar um método que é chamado de setCredentials
então, eu posso passar minhas informações de autenticação para o serviço.
Eu tenho duas entidades que importar o consumidor de serviço da web, um agente e uma biblioteca java, concebido para ser chamado a partir de LotusScript.
O estranho é que no meu agente tudo funciona bem.Biblioteca compila OK, mas quando é executada a partir do LotusScript e atinge a linha de
stub.setCredentials("xxxx","ttttt");
Java lança um java.lang.nosuchmethod
erro.O que posso estar fazendo de errado?
Muito obrigado antecipadamente por sua ajuda.
Atualização:
Talvez eu não explicar totalmente.A ação ocorre totalmente dentro do java.Isso é meio que um teste.No LotusScript, eu estou apenas chamando o construtor com a sequência de GetClass/CreateObject.O código está dentro do construtor (Para teste de causa).E parece ser exatamente a mesma, tanto na minha prova de agente e na biblioteca de java.Respondendo sua pergunta, Jason, não , setCredentials é parte de uma certa lotus.domino.tipos.PortTypeBase Interface.Quando eu consumir .o wsdl para criar um serviço da web do consumidor, eu posso ver as geradas .arquivos java que minha interface estende portTypeBase e Remoto
Solução
Não é possível chamar um Java consumidor de Serviço da Web a partir de LotusScript (LS2J).Isso é detalhado em SPR SODY7UDKE8 / APAR LO42772.Isto também aplica-se a chamar um de Java agente que por sua vez chama o Java consumidor.
Você vai precisar para criar um LotusScript consumidor para acessar o serviço da web em LotusScript.No entanto, existem limitações conhecidas no LotusScript, o que pode impedir que alguns serviços da web que está sendo consumida.
- 40 carácter variável, método, limite de
- Extremamente grande de mensagens SOAP podem causar desempenho/problemas de falha.
- Palavras-chave reservadas incompatibilidade em LS/WSDL/SOAP.
Que disse eu criei o seguinte exemplo de Provedor.
Class wsClass
Function hello ( helloText As String) As String
hello = "Hello " + helloText
End Function
End Class
No NSF foi armazenado eu configurá-lo para permitir que apenas usuários autenticados.
Eu, então, criado um LS consumidor e Java Consumidor bibliotecas a partir do WSDL gerado.
Depois que eu criei o seguinte código de exemplo.
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 (adicionado consumidor biblioteca para 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 estes funcionou conforme o esperado com as suas próprias do consumidor.