2014-11-26 3 views
1

У меня есть java-агент, который обрабатывает HTTP-запросы с помощью jsoup. Этот агент отлично работает, когда я запускаю его вручную с консоли сервера. но даст ошибку, когда я запустил ее на клиенте, (щелкните правой кнопкой мыши по агенту и запустите)Проблемы с Domino Agent при работе в Notes Client - отлично работает на сервере

  • Агент имеет значение 2. Разрешить ограниченные операции и установить значение «Выбор меню действий» и «Целевое действие» «Все документы в базе данных»
  • Я установил одинаковые параметры безопасности в файле java.policy как на сервере, так и на клиенте. Я также пытался запустить свой агент на сервере со стандартным файлом java.policy, и это тоже работало, поэтому проблема не связана с файлом java.policy.

Это ошибка я получаю в консоли отладки Java при запуске агента в примечаниях клиента (v9.0.1)

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) 

это настройки java.policy я использую в моем клиенте Notes (и на некоторых серверах)

grant { permission java.util.PropertyPermission "http.keepAlive", "read, write"; };

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?

+0

Я знаю, что не все библиотеки, которые находятся на сервере, доступны от клиента. Мой взлом webservice с XPages работает с сервера, но не с клиентом. –

+1

Можете ли вы проверить, соответствует ли ответ (используя .method и .response вместо .get()). Похоже, что у него нет действительного ответа, в то время как у него есть код ответа. Иногда это проблема прокси, она возвращает 302 и не отвечает (вы за прокси?) –

+0

благодарит Сердара, в моей сети нет прокси. Я не уверен, как получить ответ, все, что я получаю. [email protected] –

ответ

3

Прочтите это: Java Agent HTTP Connection Errors
Это решило проблему для меня.

After many restarts and toggled settings, and much pulling of hair, I was able to find a set of steps that would either cause the problem or prevent it. To make the code work:

  1. Open the Notes client
  2. Run the Java agent
  3. HTTP connection works

To get the error:

  1. Open the Notes client
  2. Open the Java Debug Console
  3. Run the Java agent
  4. HTTP connection fails

There's something about opening the Java Debug Console before running the agent that causes Notes to use a COM.ibm.JEmpower.applet.http.HttpURLConnection to make the connection instead of a sun.net.www.protocol.http.HttpURLConnection, and the JEmpower version of the class is the one that's broken (per experimentation and the APAR mentioned previously).

Oddly, if I run the agent and then open the debug console and then run the agent again, everything is fine. It's opening the debug console before I do anything that causes problems.

+1

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – beresfordt

+0

Хорошо, я исправлю свой ответ. – Ghs

+0

Это, кажется, описание проблемы и обходное решение, а не программное исправление проблемы, описанной в исходном вопросе. – beresfordt