【发布时间】:2016-09-26 14:00:30
【问题描述】:
Lotusscript 调用 Java 类得到这个错误。 抽象的: 产品领域:Domino Designer on Eclipse (DDE)
技术领域:应用程序开发
平台:Windows 2008 R2 64bit
发布:8.5.3
可重现:总是
1 在 Notes 数据库中创建 SqlTest 脚本库(Java)。 模型.java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import lotus.domino.*;
public class Model{
/**
Get database connection
@return
*/
public static Connection getConn(){
Connection conn = null;
String SqlDriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String SqlDBUrl = "jdbc:sqlserver://22.11.95.30:1433;DatabaseName=TMSTEST";
String SqlUserName = "sa";
String Sqlpwd = "1q2w3e4r!";
try {
Class.forName(SqlDriverName);
conn = DriverManager.getConnection(SqlDBUrl, SqlUserName, Sqlpwd);
System.out.println("database connection sucess");
} catch (Exception e) {
e.printStackTrace();
System.out.println("database connection failure");
}
return conn;
}
public static boolean test1(String id){
//System.out.println("---------------------");
Connection conn = getConn();
Statement stmt = null;
String sql;
// Open the current Notes db
try {
Session s = NotesFactory.createSession("22.11.95.100:63148", "admin test/testeam", "testtest");
System.out.println("session is OK");
Database db = s.getCurrentDatabase();
// System.out.println("Title of URL database: \"" + db.getTitle() + "\"");
if (db.isOpen())
System.out.println("Is open");
else
System.out.println("Not open");
Document doc = null;
//through the id para get the Notesdocument
doc = db.getDocumentByUNID(id);
System.out.println(id);
//insert the Notesdocument data to sql
if (doc != null) {
sql = "insert into TEST_USER(userID, userName,xqbh) values('123456','"+doc.getItemValueString("fld_xqbh")+"', '"+doc.getItemValueString("fld_xqmc")+"')";
System.out.println("SQL :"+sql);
stmt = conn.createStatement();
stmt.execute(sql);
System.out.println("excute finish");
return true;
}else{
return false;
}
} catch (NotesException e) {
// TODO auto generate catch block
e.printStackTrace();
return false;
}catch(SQLException se){
se.printStackTrace();
return false;
}finally{
try{
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}
备注表单中的2:
Uselsx "*javacon"
Use "SqlTest"
Function jTest(id As String) As Boolean
Dim jSession As New JAVASESSION
Dim jClass As JAVACLASS
Dim jObj As JavaObject
Set jClass = jSession.GetClass("Model")
'Msgbox jClass.className
Call jClass.test1(id)
End Function
3 通过 Lotusscript 使用 java 类:
'call java class
Call jTest(doc.UniversalID)
4 调试程序通过IDE(Lotus Domino Designer)在java控制台日志中找到错误。使用一些打印语句并找到错误行(Java):
Database db = s.getCurrentDatabase();
5 我看过关注的帖子。
Invoking method on a Java class from lotus script (LS2J)
passing LotusScript parameter to Java
google 没什么,好几天了。 谢谢大家,在此先感谢。stackoverflow 中的第一个帖子。
【问题讨论】:
-
所以只是为了澄清你在调用 s.getCurrentDatabase() 时得到“服务器不支持这种方法”,对吧?并且在使用 Session 对象之前,您是否对其进行了有效性测试?
-
在 Domino Server 测试程序中显示:NotesException:Older version on server does not support this method.并且控制台打印会话正常。在 Notes 客户端机器中:测试它接收如下:NotesException:无法从 Domino 服务器获取 IOR:22.11.141.77:63148/diiop_ior.txt.Such 一团糟。
标签: java lotus-notes lotusscript ls2j