Я работал над этой проблемой целый день, но тщетно без какого-либо эффективного решения.
У меня есть файл ear, упакованный с ejb, и несколько файлов jar (включая hibernate и другие зависимые файлы).файлы jar.). ejb не имеет состояния и включен как веб-сервис.
Файл ear был упакован с использованием maven и имеет следующую структуру
ear-> projectrelatedejb.jar
-> hibernate.jar
-> другие зависимые.jar
-> META-INF / application.xml
-> META-INF / manifest.mf
Файл application.xml и manifest автоматически генерируются maven, когдаЯ делаю пакет.
Когда я развертываю этот файл ear на glassfish, он развертывается с помощью методов ejb, доступных через веб-сервисы.Однако при доступе к приложению (используя soapui) методы ejb, которые выполняют некоторые функции базы данных с использованием hibernate throw java.lang.NoClassDefFoundError для hibernate api во время выполнения.
Из ошибки видно, что jiber-файлы hibernateне на пути к классам во время выполнения, но поскольку банки находятся внутри уха, Glassfish должен был добавить его к пути к классам приложения.
Я пробовал различные варианты, такие как добавление записей classpath в manifest.mf во время пакета (используяэлемент addClasspath с maven-ear-plugin), который не принес никакой пользы. Также с помощью Glassfish мы не можем добавлять зависимые jar-файлы в качестве модулей в application.xml, если jar-файлы не являются jar-файлами клиента приложения (Glassfish не будет развертывать earфайл, если в application.xml есть зависимые файлы jar, объявленные как модули).
Я также попытался поместить файлы jar в каталог lib внутри уха (который на самом деле не требуется) и с заголовком манифеста Class-Pathreferencing jars в каталоге lib, который также не устранил проблему.
Быстрое и грязное исправление, которое я могу сделать, чтобы получить эту работу, - это поместить hibernate и другие зависимые jars в каталог lib Glassfish.Однако, это плохая практика, и я с некоторой неохотой это делаю.
Я был бы очень признателен, если бы кто-нибудь смог предоставить мне рабочее решение этой проблемы. Я прошел через сеть в поисках этой проблемы.но не смог найти никакого решения.
Интересно, если это ошибка со стеклянной рыбкой или стеклянная рыба нуждается в чем-то особенном, чтобы ссылаться на банки в ухе.
Заранее спасибо.