0

我想为我的所有网络服务创建一个日志。我有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 );     
}

结果是:

“entrée java”
“GetAllDocuments”
“警告!”
“警报!”
会话:“空

更新 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(Unknown Source) at lotus.domino.NotesFactory.getIOR(Unknown Source) at lotus.domino.NotesFactory.createSessionC(Unknown Source) at lotus .domino.NotesFactory.createSession(Unknown Source) 在 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(Unknown Source) 在 sun sun.reflect 处的 .reflect.GeneratedMethodAccessor3780.invoke(未知来源)。java.lang.reflect.Method.invoke(Method.java:611) 处的 DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)

我尝试更改服务器配置中的某些点:

在 Server 文档中,我转到 Internet Protocols 选项卡,然后是 DIIOP 选项卡。我在主机名/地址字段中指定服务器的 Internet 主机名。我转到 Internet Protocols 选项卡、HTTP 选项卡和 R5 Basics 选项卡。然后我将“允许 HTTP 客户端浏览数据库”字段设置为是。

我添加了任务DIIOP,它不是同样的错误:

 NotesException: Invalid user name/password

但我把令牌?我做错了什么?

一个主意 ?

4

1 回答 1

0

我将无法回答您的确切问题,因为我认为这样做需要更多信息。猜测一下,您似乎在调用它之前没有创建会话对象。

不过,我可以涵盖两点。

您提到了 WebServices 和 LS2J。您的意思是 SOAP Web 服务在您的 Java 代码中吗?如果是这样,那么您的代码将永远无法工作,因为 LotusScript 使用与 WebServices 相关的保留对象。此保留对象会阻止 LS2J 正常工作。

如果是这种情况,唯一的解决方案是使用完整的 Java。

另一点与您的日志记录有关。在 Java 中创建日志记录机制似乎有些矫枉过正。您可以在 LotusScript 中完成同样的事情。它甚至有自己的日志机制,称为NotesLog

于 2014-09-02T05:18:31.937 回答