Развертывание адаптера ресурсов на Wildfly WFLYJCA0046 / IJ020066
На основе примера Trading Connector из учебников по JEE 7 я попытался создать свой собственный адаптер ресурсов. Он работал нормально со стеклянной рыбой.
Я пытаюсь развернуть свой.EAR на wildfly 10. Он не работает, и выдает сообщение ниже. Я немного растерялся, когда начать искать, так как единственное упоминание кода ошибки содержится в исходном коде самого wildfly, и я бы предпочел не читать весь код Wildfly сейчас (но я на этом).
Адаптер ресурсов является частью файла.ear, в этом файле ear у меня есть проект ejb, который является клиентом для этого RA, для того, чтобы ejb скомпилировал, я создаю ra-lib.jar рядом с rar, который содержит только записи из пакета API.
Структура.rar:
./META-INF
./META-INF/maven
./META-INF/maven/root.project
./META-INF/maven/root.project/ra
./META-INF/maven/root.project/ra/pom.xml
./META-INF/maven/root.project/ra/pom.properties
./META-INF/MANIFEST.MF
./root
./root/project
./root/project/ra
./root/project/ra/api
./root/project/ra/api/DummyRAConnectionFactory.class
./root/project/ra/api/DummyRAConnection.class
./root/project/projects
./root/project/projects/dummy
./root/project/projects/dummy/ra
./root/project/projects/dummy/ra/connection
./root/project/projects/dummy/ra/connection/DummyRAConnectionFactoryImpl.class
./root/project/projects/dummy/ra/connection/DummyRAManagedConnection.class
./root/project/projects/dummy/ra/connection/DummyRAManagedConnectionFactory.class
./root/project/projects/dummy/ra/connection/DummyRAConnectionImpl.class
./root/project/projects/dummy/ra/connection/DummyRAManagedConnection$1.class
./root/project/projects/dummy/ra/DummyImplementationRAConnector.class
Руководитель фабрики соединений:
import java.io.Serializable;
import javax.resource.Referenceable;
import root.project.ra.api.DummyRAConnectionFactory;
public class DummyRAConnectionFactoryImpl implements DummyRAConnectionFactory, Serializable, Referenceable {
Сообщение об ошибке:
08:30:21,440 ERROR [org.jboss.msc.service.fail] (ResourceAdapterDeploymentService Thread Pool -- 1) MSC000001: Failed to start service jboss.raactivator.java_comp_env_eis_DummyRAConnectionFactory: org.jboss.msc.service.StartException in service jboss.raactivator.java_comp_env_eis_DummyRAConnectionFactory: WFLYJCA0046: Failed to start RA deployment [java_comp_env_eis_DummyRAConnectionFactory]
at org.jboss.as.connector.services.resourceadapters.deployment.AbstractResourceAdapterDeploymentService$2.run(AbstractResourceAdapterDeploymentService.java:325)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: org.jboss.jca.deployers.common.DeployException: IJ020066: Connection factory implementation (root.project.projects.dummy.ra.connection.DummyRAConnectionFactoryImpl) doesn't implement connection factory interface (root.project.ra.api.DummyRAConnectionFactory)
at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.createObjectsAndInjectValue(AbstractResourceAdapterDeployer.java:1348)
at org.jboss.as.connector.services.resourceadapters.ResourceAdapterActivatorService$ResourceAdapterActivator.doDeploy(ResourceAdapterActivatorService.java:171)
at org.jboss.as.connector.services.resourceadapters.ResourceAdapterActivatorService.start(ResourceAdapterActivatorService.java:115)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Я не вижу причин, по которым ClassLoader, который может видеть ConnectionFactoryImpl, также не может видеть интерфейс. Ранее у меня был интерфейс в другом jar-файле (чтобы мне не нужно было создавать jar-файл из rar для клиентов), и это привело к той же ошибке.
Я оставил это коротким, поэтому, пожалуйста, спросите, когда чего-то не хватает, я добавлю это быстро.
1 ответ
Проблема была в том, что мне были нужны классы интерфейса в EJB, у которого есть клиент для этого RA. там я не указал.jar, который я создал из.rar, как <scope>provided</scope>
так что в финале. год у меня был ra-api.jar
и ra.rar
что ОБА содержал интерфейс .class
,