Lotusscript Aufruf der Java-Klasse erhalten diesen Fehler. Zusammenfassung: Bereich Produkt: Domino Designer auf Eclipse (DDE)NotesException: Ältere Version auf dem Server unterstützt diese Methode nicht
Technischer Bereich: Anwendungsentwicklung
Plattform: Windows 2008 R2 64bit
Release: 8.5.3
Reproduzierbare: Immer
1 Erstellen Sie SqlTest-Skriptbibliothek (Java) in der Notes-Datenbank. Model.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 in der Notes-Form:
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 Verwendung der Java-Klasse durch Lotusscript:
'call java class
Call jTest(doc.UniversalID)
4 Debug das Programm den Fehler in Java-Konsole finden Loggen Sie über IDE (Lotus Domino Designer). Verwenden Sie einige Drucksätze und finden Sie die Fehlerzeile (Java):
Database db = s.getCurrentDatabase();
5 Ich habe die folgenden Posts gesehen.
Invoking method on a Java class from lotus script (LS2J)
passing LotusScript parameter to Java
google Nichts, Probleme für Tage. danke allen, vielen Dank im Voraus.Erste Beiträge in stackoverflow.
Also nur um zu verdeutlichen bekommen Sie, dass "Server diese Methode nicht unterstützt" beim Aufruf von s.getCurrentDatabase(), richtig? Und testen Sie das Session-Objekt vor der Verwendung auf Gültigkeit? – Duston
im Domino Server Testprogramm anzeigen: NotesException: Ältere Version auf Server unterstützt diese Methode nicht. und Konsole drucken Sitzung ist OK.auf einem Notes Client-Computer: Test it receive follow: NotesException: IOR konnte nicht vom Domino Server abgerufen werden: http: /22.11.141.77: 63148/diiop_ior.txt. – witlili