2017-02-14 14 views
0

Я пытаюсь настроить WLP для существующего приложения EAR. Эта настройка отлично работает с традиционным WAS 9.Невозможно использовать ресурс JCA CICS с IBM WebSphere Application Server Liberty Profile

Проблема заключается в вызове адаптера ресурса JCA CICS.

server.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<server description="new server"> 

    <!-- Enable features --> 
    <featureManager> 
     <feature>javaee-7.0</feature> 
    </featureManager> 

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" --> 
    <httpEndpoint id="defaultHttpEndpoint" 
        host="*" 
        httpPort="9080" 
        httpsPort="9443" /> 

    <!-- Automatically expand WAR files and EAR files --> 
    <applicationManager autoExpand="true"/> 

    <library id="sharedLibs"> 
     <fileset dir="/work/sharedlibs" includes="*.jar"/> 
     <folder dir="/work" /> 
    </library> 

    <resourceAdapter 
      autoStart="true" 
      id="eciResourceAdapter" 
      location="/work/cicseci.rar"> 
    </resourceAdapter> 

    <connectionFactory id="CTGDV06" jndiName="jca/CTGDV06" > 
     <properties.eciResourceAdapter.javax.resource.cci.ConnectionFactory 
       connectionUrl="tcp://*******" 
       serverName="*******" 
       userName="*******" 
       portNumber="2006" 
     /> 
    </connectionFactory> 

    <application type="ear" id="app" location="app.ear" name="app"> 
     <classloader 
       commonLibraryRef="sharedLibs" 
       classProviderRef="eciResourceAdapter" /> 
    </application> 
</server> 

в Ibm-веб-bnd.xml:

<resource-ref name="cicsjca" binding-name="jca/CTGDV06"></resource-ref> 

в web.xml:

<resource-ref id="ResourceRef_Cics_Jca"> 
    <description>Acces CICS</description> 
    <res-ref-name>cicsjca</res-ref-name> 
    <res-type>javax.resource.cci.ConnectionFactory</res-type> 
    <res-auth>Application</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 

Запуск в порядке, но доступ к JCA сбой:

java.lang.Exception: Lookup for java:comp/env/cicsjca failed. Exception: javax.naming.NamingException: CWNEN1001E: The object referenced by the java:comp/env/cicsjca JNDI name could not be instantiated. If the reference name maps to a JNDI name in the deployment descriptor bindings for the application performing the JNDI lookup, make sure that the JNDI name mapping in the deployment descriptor binding is correct. If the JNDI name mapping is correct, make sure the target resource can be resolved with the specified name relative to the default initial context. 
[Root exception is com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/cicsjca reference. The exception message was: CWNEN1003E: The server was unable to find the jca/CTGDV06 binding with the javax.resource.cci.ConnectionFactory type for the java:comp/env/cicsjca reference.] 

Я не понимаю, что случилось с этой настройкой, любая помощь будет оценена!

ответ

1

Правильная конфигурация зависит от того, сколько ресурсов на заводе реализовано адаптером ресурсов.

Если адаптер ресурсов обеспечивает только одно соединение завода (который обычно имеет место для многих адаптеров ресурсов), то конфигурация будет:

<connectionFactory id="CTGDV06" jndiName="jca/CTGDV06" > 
    <properties.eciResourceAdapter 
      connectionUrl="tcp://*******" 
      serverName="*******" 
      userName="*******" 
      portNumber="2006" 
    /> 
</connectionFactory> 

Полная подробно о том, как задать конфигурацию для JCA адаптеров ресурсов в Свободу можно найти here в центре знаний.

+0

Я пробовал этот синтаксис ранее без успеха. Теперь с вашим синтаксисом я столкнулся с этим исключением: 'java.lang.Exception: поиск java: comp/env/cicsjca не удался. Исключение: java.lang.ClassCastException: com.ibm.connector2.cics.ECIConnectionFactory несовместимо с com.ibm.connector2.cics.ECIConnectionFactory' –

+0

Это исключение указывает, что тот же класс загружается из двух разных мест. У вас есть копия этого класса в вашем RAR и в одном из ваших баннеров sharedLib? Я подозреваю, что вам нужно указать 'classProviderRef' в своем загрузчике классов приложений. –

+0

Точно, cicseci.jar и другие отпечатки. также загружаются в общую библиотеку lib. Приложение использует некоторые собственные структуры, которые используют эту же банку. Я проверяю это ... –

 Смежные вопросы

  • Нет связанных вопросов^_^