Java代理中的Java NullPointerException

时间:2013-12-20 04:23:47

标签: java lotus-domino

我正在开发一个java代理。我有一个NullPointerException错误,我相信不应该发生。

以下是调试控制台消息:

java.lang.NullPointerException
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:719)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:646)
    at COM.ibm.JEmpower.applet.http.HttpURLConnection.getInputStream(HttpURLConnection.java:411)
    at COM.ibm.JEmpower.applet.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:703)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:399)
    at JavaAgent.NotesMain(JavaAgent.java:16)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)

这是java代理中的代码

import lotus.domino.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
public class JavaAgent extends AgentBase {

    public void NotesMain() {
      String strAux = "[A Working URL]";
      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();

          // (Your code goes here)

          HttpURLConnection httpCon = (HttpURLConnection) new URL(strAux).openConnection();

          httpCon.setRequestMethod("HEAD");
          httpCon.setConnectTimeout(20000);  
          httpCon.setReadTimeout(20000);

          httpCon.connect();

          System.out.println(HttpCon.getURL().toString());

          int responsecode = httpCon.getResponseCode();
          System.out.println("Response code is " + responsecode + " - " + httpCon.getResponseMessage());
      } catch(Exception e) {
          e.printStackTrace();
      }
    }

}

基本上错误指向System.out.println("Response code is " + httpCon.getResponseCode() + " - " + httpCon.getResponseMessage());

事实上,URL是一个有用的链接,因为我通过在浏览器中访问来尝试它。

出现此错误的可能原因是什么?它在我为测试创建的本地笔记数据库上不起作用。但是,在一个没有在笔记中开发的普通java程序中,它可以工作。

3 个答案:

答案 0 :(得分:2)

在发送任何内容之前获取响应代码毫无意义。您应该首先发送请求,然后获取响应代码,然后在需要时获取响应

答案 1 :(得分:1)

您可能仍然遇到代码问题,但您也可能遇到权限问题。

您的代码在IBM Lotus Domino服务器上作为Java代理运行。这意味着它受到限制它可以做什么。有三个级别的控制:Domino的AMGR任务施加的限制,分配给您的代理的限制以及JVM施加的限制。假设您是代理的签名者,您是否确保您有权运行不受限制的代理(Domiono目录中的服务器文档的安全选项卡)?您是否已检查代理上的设置(代理的“代理属性”对话框的“安全”选项卡)?如果已正确设置所有这些,则可能必须查看Domino服务器安装中的文件jvm / lib / security / java.policy。

答案 2 :(得分:1)

  1. 关闭Notes / Designer
  2. 在Windows中打开任务管理器
  3. 查找并终止所有IBM Lotus Notes / Domino进程
  4. 再试一次
  5. 为我工作