Я пытаюсь настроить 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.]
Я не понимаю, что случилось с этой настройкой, любая помощь будет оценена!
Я пробовал этот синтаксис ранее без успеха. Теперь с вашим синтаксисом я столкнулся с этим исключением: 'java.lang.Exception: поиск java: comp/env/cicsjca не удался. Исключение: java.lang.ClassCastException: com.ibm.connector2.cics.ECIConnectionFactory несовместимо с com.ibm.connector2.cics.ECIConnectionFactory' –
Это исключение указывает, что тот же класс загружается из двух разных мест. У вас есть копия этого класса в вашем RAR и в одном из ваших баннеров sharedLib? Я подозреваю, что вам нужно указать 'classProviderRef' в своем загрузчике классов приложений. –
Точно, cicseci.jar и другие отпечатки. также загружаются в общую библиотеку lib. Приложение использует некоторые собственные структуры, которые используют эту же банку. Я проверяю это ... –