在 Java 库中,lotus.domino.Session class 方法 createDateTime() 抛出 NullPointerException
Within Java Library, lotus.domino.Session class method createDateTime() throws NullPointerException
Domino Designer Java 库文件夹中的 Java 文件(不是 Agents 文件夹中的 Java 代理)当从 XPage SSJS 调用时,标准方法将抛出 NullPointerException,例如createDateTime()
:
import java.io.*;
import java.net.*;
import java.security.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.faces.context.FacesContext;
import javax.net.ssl.HttpsURLConnection;
import com.ibm.commons.util.io.base64.Base64;
import lotus.domino.*;
public class Tools extends AgentBase {
...
public void getSession( ) throws IOException {
Session s = getSession();
DateTime dt = s.createDateTime("Today"); // NullPointerException
String n = s.getEffectiveUserName(); // NullPointerException
...
}
}
如果Java代码保存为Java代理,则不会抛出异常。
是否有另一种方法可以在 Java 中使用“现在”设置 NotesDateTime 字段而无需使用 session.createDateTime() 方法?
在使用 Java 库(不是代理)时,是否扩展了 AgentBase 或是否有其他扩展?
还有哪些创建可能有用的 lotus.domino.Session 的方法?
更新: 在 plugin.xml 中,我添加了 com.ibm.xsp.extlib 作为 Dependency,并且 Java class 编译无错误。
XPages 属性,页面生成 Xpage 库 com.ibm.xsp.extlib.library 已选中。
从服务器控制台,告诉 http osgi ss com.ibm.xsp.extlib returns:
> tell http osgi ss com.ibm.xsp.extlib
osgi> "Framework is launched."
id State Bundle
114 RESOLVED com.ibm.xsp.extlib.controls.nl1_9.0.1.v10_00_20180115-1058
Master=117
115 RESOLVED com.ibm.xsp.extlib.controls.nl2_9.0.1.v10_00_20180115-1058
Master=117
116 RESOLVED com.ibm.xsp.extlib.controls.nl3_9.0.1.v10_00_20180115-1058
Master=117
117 STARTING com.ibm.xsp.extlib.controls_9.0.1.v10_00_20180115-1058
Fragments=116, 115, 114
118 RESOLVED com.ibm.xsp.extlib.core.nl1_9.0.1.v10_00_20180115-1058
Master=121
119 RESOLVED com.ibm.xsp.extlib.core.nl2_9.0.1.v10_00_20180115-1058
Master=121
120 RESOLVED com.ibm.xsp.extlib.core.nl3_9.0.1.v10_00_20180115-1058
Master=121
121 STARTING com.ibm.xsp.extlib.core_9.0.1.v10_00_20180115-1058
Fragments=119, 118, 120
122 RESOLVED com.ibm.xsp.extlib.domino.nl1_9.0.1.v10_00_20180115-1058
Master=125
123 RESOLVED com.ibm.xsp.extlib.domino.nl2_9.0.1.v10_00_20180115-1058
Master=125
124 RESOLVED com.ibm.xsp.extlib.domino.nl3_9.0.1.v10_00_20180115-1058
Master=125
125 STARTING com.ibm.xsp.extlib.domino_9.0.1.v10_00_20180115-1058
Fragments=123, 124, 122
126 RESOLVED com.ibm.xsp.extlib.mobile.nl1_9.0.1.v10_00_20180115-1058
Master=129
127 RESOLVED com.ibm.xsp.extlib.mobile.nl2_9.0.1.v10_00_20180115-1058
Master=129
128 RESOLVED com.ibm.xsp.extlib.mobile.nl3_9.0.1.v10_00_20180115-1058
Master=129
129 STARTING com.ibm.xsp.extlib.mobile_9.0.1.v10_00_20180115-1058
Fragments=127, 128, 126
130 RESOLVED com.ibm.xsp.extlib.oneui.nl1_9.0.1.v10_00_20180115-1058
Master=133
131 RESOLVED com.ibm.xsp.extlib.oneui.nl2_9.0.1.v10_00_20180115-1058
Master=133
132 RESOLVED com.ibm.xsp.extlib.oneui.nl3_9.0.1.v10_00_20180115-1058
Master=133
133 STARTING com.ibm.xsp.extlib.oneui_9.0.1.v10_00_20180115-1058
Fragments=132, 130, 131
134 RESOLVED com.ibm.xsp.extlib.relational.nl1_9.0.1.v10_00_20180115-1058
Master=137
135 RESOLVED com.ibm.xsp.extlib.relational.nl2_9.0.1.v10_00_20180115-1058
Master=137
136 RESOLVED com.ibm.xsp.extlib.relational.nl3_9.0.1.v10_00_20180115-1058
Master=137
137 STARTING com.ibm.xsp.extlib.relational_9.0.1.v10_00_20180115-1058
Fragments=135, 136, 134
138 STARTING com.ibm.xsp.extlib_9.0.1.v10_00_20180115-1058
请注意日志显示 STARTING com.ibm.xsp.extlib_9.0.1.v10_00_20180115-1058
这是什么意思?我还向服务器添加了一个 updatesite.nsf 文件,并将 Notes.ini 更新为 OSGI_HTTP_DYNAMIC_BUNDLES=install\update-site.nsf.
启动 HTTP 时,没有消息表明 OSGI 正在加载到 运行 时间。
我在尝试设置会话时遇到的错误:
NoClassDefFoundError: com/ibm/xsp/extlib/util/ExtLibUtil
这个 class 是否已经包含在 Domino 9.0.1FP10 服务器中?
通过
获取会话
Session s = ExtLibUtil.getCurrentSession();
您随后的代码行将起作用。
public class Tools {
...
public void yourMethod() {
Session s = ExtLibUtil.getCurrentSession();
DateTime dt = s.createDateTime("Today");
String n = s.getEffectiveUserName();
...
}
}
您使用的功能 getSession()
仅适用于 Java 代理。
不要忘记将扩展库包含到您的项目中:
Domino Designer Java 库文件夹中的 Java 文件(不是 Agents 文件夹中的 Java 代理)当从 XPage SSJS 调用时,标准方法将抛出 NullPointerException,例如createDateTime()
:
import java.io.*;
import java.net.*;
import java.security.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.faces.context.FacesContext;
import javax.net.ssl.HttpsURLConnection;
import com.ibm.commons.util.io.base64.Base64;
import lotus.domino.*;
public class Tools extends AgentBase {
...
public void getSession( ) throws IOException {
Session s = getSession();
DateTime dt = s.createDateTime("Today"); // NullPointerException
String n = s.getEffectiveUserName(); // NullPointerException
...
}
}
如果Java代码保存为Java代理,则不会抛出异常。
是否有另一种方法可以在 Java 中使用“现在”设置 NotesDateTime 字段而无需使用 session.createDateTime() 方法?
在使用 Java 库(不是代理)时,是否扩展了 AgentBase 或是否有其他扩展?
还有哪些创建可能有用的 lotus.domino.Session 的方法?
更新: 在 plugin.xml 中,我添加了 com.ibm.xsp.extlib 作为 Dependency,并且 Java class 编译无错误。
XPages 属性,页面生成 Xpage 库 com.ibm.xsp.extlib.library 已选中。
从服务器控制台,告诉 http osgi ss com.ibm.xsp.extlib returns:
> tell http osgi ss com.ibm.xsp.extlib
osgi> "Framework is launched."
id State Bundle
114 RESOLVED com.ibm.xsp.extlib.controls.nl1_9.0.1.v10_00_20180115-1058
Master=117
115 RESOLVED com.ibm.xsp.extlib.controls.nl2_9.0.1.v10_00_20180115-1058
Master=117
116 RESOLVED com.ibm.xsp.extlib.controls.nl3_9.0.1.v10_00_20180115-1058
Master=117
117 STARTING com.ibm.xsp.extlib.controls_9.0.1.v10_00_20180115-1058
Fragments=116, 115, 114
118 RESOLVED com.ibm.xsp.extlib.core.nl1_9.0.1.v10_00_20180115-1058
Master=121
119 RESOLVED com.ibm.xsp.extlib.core.nl2_9.0.1.v10_00_20180115-1058
Master=121
120 RESOLVED com.ibm.xsp.extlib.core.nl3_9.0.1.v10_00_20180115-1058
Master=121
121 STARTING com.ibm.xsp.extlib.core_9.0.1.v10_00_20180115-1058
Fragments=119, 118, 120
122 RESOLVED com.ibm.xsp.extlib.domino.nl1_9.0.1.v10_00_20180115-1058
Master=125
123 RESOLVED com.ibm.xsp.extlib.domino.nl2_9.0.1.v10_00_20180115-1058
Master=125
124 RESOLVED com.ibm.xsp.extlib.domino.nl3_9.0.1.v10_00_20180115-1058
Master=125
125 STARTING com.ibm.xsp.extlib.domino_9.0.1.v10_00_20180115-1058
Fragments=123, 124, 122
126 RESOLVED com.ibm.xsp.extlib.mobile.nl1_9.0.1.v10_00_20180115-1058
Master=129
127 RESOLVED com.ibm.xsp.extlib.mobile.nl2_9.0.1.v10_00_20180115-1058
Master=129
128 RESOLVED com.ibm.xsp.extlib.mobile.nl3_9.0.1.v10_00_20180115-1058
Master=129
129 STARTING com.ibm.xsp.extlib.mobile_9.0.1.v10_00_20180115-1058
Fragments=127, 128, 126
130 RESOLVED com.ibm.xsp.extlib.oneui.nl1_9.0.1.v10_00_20180115-1058
Master=133
131 RESOLVED com.ibm.xsp.extlib.oneui.nl2_9.0.1.v10_00_20180115-1058
Master=133
132 RESOLVED com.ibm.xsp.extlib.oneui.nl3_9.0.1.v10_00_20180115-1058
Master=133
133 STARTING com.ibm.xsp.extlib.oneui_9.0.1.v10_00_20180115-1058
Fragments=132, 130, 131
134 RESOLVED com.ibm.xsp.extlib.relational.nl1_9.0.1.v10_00_20180115-1058
Master=137
135 RESOLVED com.ibm.xsp.extlib.relational.nl2_9.0.1.v10_00_20180115-1058
Master=137
136 RESOLVED com.ibm.xsp.extlib.relational.nl3_9.0.1.v10_00_20180115-1058
Master=137
137 STARTING com.ibm.xsp.extlib.relational_9.0.1.v10_00_20180115-1058
Fragments=135, 136, 134
138 STARTING com.ibm.xsp.extlib_9.0.1.v10_00_20180115-1058
请注意日志显示 STARTING com.ibm.xsp.extlib_9.0.1.v10_00_20180115-1058
这是什么意思?我还向服务器添加了一个 updatesite.nsf 文件,并将 Notes.ini 更新为 OSGI_HTTP_DYNAMIC_BUNDLES=install\update-site.nsf.
启动 HTTP 时,没有消息表明 OSGI 正在加载到 运行 时间。
我在尝试设置会话时遇到的错误:
NoClassDefFoundError: com/ibm/xsp/extlib/util/ExtLibUtil
这个 class 是否已经包含在 Domino 9.0.1FP10 服务器中?
通过
获取会话Session s = ExtLibUtil.getCurrentSession();
您随后的代码行将起作用。
public class Tools {
...
public void yourMethod() {
Session s = ExtLibUtil.getCurrentSession();
DateTime dt = s.createDateTime("Today");
String n = s.getEffectiveUserName();
...
}
}
您使用的功能 getSession()
仅适用于 Java 代理。
不要忘记将扩展库包含到您的项目中: