【发布时间】:2014-07-07 10:32:12
【问题描述】:
我想为我的所有网络服务创建一个日志。 我有java登录,它可以工作。 我想在 Lotus Domino 中使用我对 LS2J 类做的 java 类做同样的事情。
它可以编译我的 java 类和 ls2j 代码。 当我尝试在 Lotus 中调用这个 java 时,它可以工作! 但是当我用getter在java中调用它时我有一个空值!
Class GetAllDocuments
Private logDTO As LogWSDTO
Private objectJavaA As JAVAOBJECT
Private a As LogWebService
Private db As NotesDatabase
Public Sub New()
Set logDTO = New LogWSDTO()
Set a = New LogWebService()
Set objectJavaA = a.getJavaObject
End Sub
Public Function GetAllDocuments()
call logDTO.setNomBaseNotesWS(db.FileName)
objectJavaA.setLog(logDTO.getJavaObject())
End Function
我在 lotus 中有一个类,它叫我的 java 类:
UseLSX "*javacon"
Class LogWSDTO
sessionJava As JAVASESSION
classJava As JAVACLASS
objectJava As JAVAOBJECT
methodJava As JAVAMETHOD
Public Sub New()
Set sessionJava = New JAVASESSION
Set classJava = sessionJava.GetClass("com.pasquier.DTO.WS/LogWSDTO")
Set objectJava = classJava.CreateObject
End Sub
Public Function getNomBaseNotesWS()
Set methodJava = classJava.GetMethod("getNomBaseNotesWS","()Ljava/lang/String;")
getNomBaseNotesWS = objectJava.getNomBaseNotesWS()
End Function
Public Sub setNomBaseNotesWS(nomBaseNotesWS As String)
Set methodJava = classJava.GetMethod("setNomBaseNotesWS","(Ljava/lang/String;)V")
objectJava.setNomBaseNotesWS(nomBaseNotesWS)
End Sub
在java中: 我不能有一个会话,这总是空的
public void setLog(LogWSDTO log) {
System.out.println("entrée java");
System.out.println(log.getNomBaseNotesWS()); <== I Have the data !!
this.logDTO = log;
if (session == null)
{
System.out.println("alert !");
session = session.getSession(); <== it doesn't compil i pass it in comment to test
System.out.println("alert !");
}
System.out.println("Session :" + session );
}
结果是:
“进入 java”
“获取所有文档”
“警告!”
“警告!”
会话:“空
更新 2:
我修改了我的代码,我用代理获取了我的会话 LotusScript 的令牌,我放入了 myLogBean。 在java中,我尝试创建一个新会话:
public void setLog(LogWSDTO log) {
this.logDTO = log;
String sessionParam = logDTO.getSessionParam();
if (session == null)
{
try {
session = lotus.domino.NotesFactory.createSession("myhost",sessionParam);
} catch (NotesException e) {
// TODO Bloc catch auto-généré
e.printStackTrace();
}
System.out.println("alert !");
}
System.out.println("Session :" + session );
}
结果是:
NotesException:无法从 Domino 服务器获取 IOR:
http://myhost/diiop_ior.txt在 lotus.domino.NotesFactory.requestIORPlain(Unknown Source) at lotus.domino.NotesFactory.requestIORUsingArgs(未知来源)在 lotus.domino.NotesFactory.getIOR(未知来源)在 lotus.domino.NotesFactory.createSessionC(Unknown Source) at lotus.domino.NotesFactory.createSession(Unknown Source) at com.pasquier.launcher.LogWebService.setLog(LogWebService.java:64) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 在 java.lang.reflect.Method.invoke(Method.java:611) 在 lotus.domino.JavaConnectInvoker.invoke(未知来源)在 sun.reflect.GeneratedMethodAccessor3780.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 在 java.lang.reflect.Method.invoke(Method.java:611)
我尝试更改服务器配置中的某些点:
在服务器文档中,我转到 Internet 协议选项卡,然后是 DIIOP 选项卡。我在主机名/地址字段中指定服务器的 Internet 主机名。 我转到 Internet Protocols 选项卡、HTTP 选项卡和 R5 Basics 选项卡。然后我将“允许 HTTP 客户端浏览数据库”字段设置为是。
我添加了任务DIIOP,它不是同样的错误:
NotesException: Invalid user name/password
但是我放了令牌?我做错了什么?
一个想法?
【问题讨论】:
-
将
logDTO.setDateHeureDebutWS(dt)更改为call logDTO.setDateHeureDebutWS(dt) -
当你添加
call指令时它是否编译lotusscript,正如我在之前的评论中提到的那样? -
我尝试“调用 logDTO.setDateHeureDebutWS(dt)”但我有这个错误:108:不是成员 SETDATEHEUREDEBUTWS
-
添加显示你如何声明和初始化
logDTO的lotusscript代码 -
变量
logDTO指的是LogWSDTO类的一个实例,并且只有一个方法setDateHeureDebutWS(dateHeureDebut As String)如您所见,它需要一个字符串参数,而您正在尝试传递NotesDateTime参数价值。
标签: java lotus-domino ls2j