Java агент ошибка при вызове веб сервиса

Тема в разделе "Lotus + Java + LS2J", создана пользователем twister, 21 сен 2009.

  1. twister

    twister Гость

    Добрый день!
    Агент вызывающий Web-сервис с помощью Axis, вызывает ошибки если файлы jar (axis.jar, commons-discovery-0.2.jar и commons-logging-1.0.4.jar) непосредственно добавлены в агент. Если файлы скопированы в \jvm\lib\ext Notes-клиента, то агент выполняется нормально. В чем проблема, поможет кто-нибудь? Спасибо.
    Ошибка:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">java.lang.ExceptionInInitializerError и AccessControlException</div></div><div class="sp-body"><div class="sp-content">at org.apache.axis.handlers.BasicHandler.<clinit>(BasicHandler.java:43)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.<init>(Service.java:113)
    at JavaAgent.NotesMain(JavaAgent.java:19)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Caused by: org.apache.commons.discovery.DiscoveryException: Unable to instantiate implementation class for org.apache.commons.logging.LogFactory
    *****
    java.security.AccessControlException: access denied (java.lang.RuntimePermission getClassLoader)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:292
    )
    at java.security.AccessController.checkPermission(AccessController.java:476)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:538)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.ja
    va:1422)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.jav
    a:1284)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1498)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1437)
    at java.lang.ClassLoader.getParent(ClassLoader.java:1038)
    at org.apache.commons.discovery.resource.ClassLoaders.isAncestor(ClassLoaders.java:
    141)
    at org.apache.commons.discovery.resource.ClassLoaders.put(ClassLoaders.java:114)
    at org.apache.commons.discovery.resource.ClassLoaders.getLibLoaders(ClassLoaders.ja
    va:176)
    at org.apache.commons.discovery.tools.DiscoverClass.find(DiscoverClass.java:355)
    at org.apache.commons.discovery.tools.DiscoverClass.newInstance(DiscoverClass.java:
    579)
    at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java
    :418)
    at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java
    :378)
    at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
    at java.security.AccessController.doPrivileged1(Native Method)
    at java.security.AccessController.doPrivileged(AccessController.java:287)
    at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
    at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
    at org.apache.axis.handlers.BasicHandler.<clinit>(BasicHandler.java:43)
    at org.apache.axis.client.Service.getAxisClient(Service.java:104)
    at org.apache.axis.client.Service.<init>(Service.java:113)
    at JavaAgent.NotesMain(JavaAgent.java:19)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)

    at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java
    :426)
    at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java
    :378)
    at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
    at java.security.AccessController.doPrivileged1(Native Method)
    at java.security.AccessController.doPrivileged(AccessController.java:287)
    at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
    at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
    ... 6 more
    Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission getClassLoader)
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    ужо скокам говорено - не кладите сторонние либы в базу...
    jvm/lib/ext/
    туды их надо всегда
    а причина - класслоадер так работает у Нотусей, сложные классы имеют статические методы, и классы типа синглтон (а как вы реализуете в рамках агента - ежели он убивается), и свою стр-ру нитей, всё это jvm должна грузить один раз и выгружать по закрытии, а не при каждом старте агента
     
  3. twister

    twister Гость

    Я знаю что так будет работать. Вебсервис будет вызываться с машин пользователей, придется копировать каждому пользователю эти файлы в jvm/lib/ext/. Других решений нет?
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    нет других решений и быть не должно (в тек. реализации jvm от ИБМ) - читайте выше (я развернул тезис)
    автоматизируйте (проверяйте при старте агента, на присут. библы, и копируйте - ежели чё, просите передернуть Нотуса)
     
  5. twister

    twister Гость

    Ясно, спасибо за информацию!
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    помница - чуть не убились конкретно на этой задаче. но решили :)

    на самом деле в семерке axis есть. тока об этом почему-то молчат.
    замена
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    на
    import lotus.domino.axis.client.Call;
    import lotus.domino.axis.client.Service;
    ну и т.д. и вперед.

    тока помница, пришлось создать свой HTTPSender - неверно формировался заголовок пакета:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import java.util.Hashtable;

    import lotus.domino.axis.AxisFault;
    import lotus.domino.axis.MessageContext;
    import lotus.domino.axis.client.Call;
    import lotus.domino.axis.transport.http.HTTPConstants;
    import lotus.domino.axis.transport.http.HTTPSender;

    public class HTTPModifiedHeaderHandler extends HTTPSender {
    public static final String CVS_VERSION = "$Revision$";

    public void invoke(MessageContext msgCtx) throws AxisFault {
    System.out.println( msgCtx );
    modifyHTTPHeader(msgCtx);
    super.invoke(msgCtx);
    }

    public void modifyHTTPHeader(MessageContext msgCtx) {
    Hashtable headers = (Hashtable) msgCtx
    .getProperty(HTTPConstants.REQUEST_HEADERS);
    if (headers == null) {
    headers = new Hashtable();
    msgCtx.setProperty(HTTPConstants.REQUEST_HEADERS, headers);
    }
    Call call = (Call) msgCtx.getProperty("call_object");
    String s = call.getSOAPActionURI();
    if ( s == null ) { s = ""; };
    headers.put("SOAPAction", s);
    }
    }[/CODE]
    плюс добавить в проект корректный
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">client-config.wsdd</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='xml'><?xml version="1.0" encoding="UTF-8"?>
    <deployment name="defaultClientConfig"
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    .....
    <transport name="http"
    pivot="java:HTTPModifiedHeaderHandler" /> ' сюда имя класса вместе с пакетом
    ....
    </deployment>[/CODE]
    идея взята с http://www.unimatrix-0.de/index.php?option...s&Itemid=55
     
  7. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    В восьмерке появились Web Service Consumer. Вы не пробовали их?
    Они, конечно, ограниченнее, чем Axis, зато родные.
    Не обязательно даже юзерам ставить восьмерку - можно поставить восьмые сервера и веб-сервисы вызывать серверным агентом.
     
Загрузка...
Похожие Темы - Java агент ошибка
  1. TAPAKAHATOP
    Ответов:
    18
    Просмотров:
    1.529
  2. erdi
    Ответов:
    9
    Просмотров:
    1.636
  3. HelenHelen
    Ответов:
    5
    Просмотров:
    1.758
  4. YGol
    Ответов:
    4
    Просмотров:
    1.513
  5. KingGLEB
    Ответов:
    1
    Просмотров:
    1.111

Поделиться этой страницей