在Notes客户端中运行时Domino代理问题 - 在服务器上正常工作

时间:2014-11-26 12:59:13

标签: java security xpages lotus-domino agent

我有一个使用jsoup发出http请求的java代理,当我从服务器控制台手动触发它时,此代理正常工作。但是当我在客户端上运行它时会出错(右键单击代理并运行)

  • 代理设置为选项2.允许受限操作,并设置为"操作菜单选择"和目标"数据库中的所有文件"
  • 我在服务器和客户端的java.policy文件中设置了相同的安全设置。 我还尝试在具有"标准的服务器上运行我的代理。 java.policy文件也有效,所以问题似乎与java.policy文件无关。

这是我在Notes客户端(v9.0.1)中运行代理时在Java调试控制台中遇到的错误

java.lang.NullPointerException
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:727)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:654)
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 org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:453)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:170)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)

这是我在Notes客户端(以及某些服务器上)使用的java.policy设置

  

grant {permission java.util.PropertyPermission" http.keepAlive",   "读,写&#34 ;; };

     

grant {permission java.security.AllPermission; }

这是代理商代码

public class JavaAgent extends AgentBase {

public void NotesMain() {

  try {
      Session session = getSession();
      AgentContext agentContext = session.getAgentContext();
      Database db = session.getCurrentDatabase();
      lotus.domino.Document d = db.getView("inbox").getFirstDocument();

      String url = d.getItemValueString("Subject"); 
      Document x = Jsoup.connect(url).userAgent("Mozilla").get();
      Elements p = x.select("p");
      RichTextItem rt = (RichTextItem) d.getFirstItem("Body");
      rt.appendText(p.text());
      d.replaceItemValue("Processed", "1");
      d.save();

  } catch(Exception e) {
      e.printStackTrace();
   }

} }

如何让代理在我的本地Notes客户端上运行?

1 个答案:

答案 0 :(得分:3)

阅读本文:Java Agent HTTP Connection Errors
这解决了我的问题。

  

经过多次重新启动和切换设置以及大量拔毛后,我能够找到一组导致问题或阻止它的步骤。为了使代码有效:

     
      
  1. 打开Notes客户端
  2.   
  3. 运行Java代理
  4.   
  5. HTTP连接正常工作
  6.         

    要收到错误:

         
        
    1. 打开Notes客户端
    2.   
    3. 打开Java调试控制台
    4.   
    5. 运行Java代理
    6.   
    7. HTTP连接失败
    8.         

      在运行导致Notes使用COM.ibm.JEmpower.applet.http.HttpURLConnection进行连接而不是sun.net.www.protocol的代理之前,打开Java调试控制台有一些问题。 .http.HttpURLConnection,该类的JEmpower版本是破坏的(每次实验和前面提到的APAR)。

           

      奇怪的是,如果我运行代理然后打开调试控制台然后再次运行代理,一切都很好。它在我做任何导致问题的事情之前打开调试控制台。