2016-07-25 1 views
1

У меня возникла следующая проблема: при развертывании ejb-проекта eclipse на моем сервере Glassfish я получаю «Class [. ..] не найден "в журнале моего сервера для одного из моих компонентов. Поэтому Eclipse говорит мне, что «развернуть не удается».Класс не найден в META-INF/lib после развертывания на Glassfish, хотя все банки там

Убедительная причина этой ошибки заключается в том, что я использую класс из стороннего баннера (Apache Shiro). В то время как/после развертывания, стеклянная рыба не может найти используемый класс. Если я пропущу одну и только строку кода, используя класс от Apache siro, все будет хорошо.

Я использую maven для управления зависимостями и правильно добавил зависимости maven к моему пути сборки Java (так что я не сталкиваюсь с какими-либо ошибками при реализации кода) и моей сборке развертывания EJB.

Зависимости maven (все необходимые банки) правильно упакованы в мой ejb-jar-файл под META-INF/lib. Это было проверено дважды (1) путем экспорта и проверки файла ejb-jar с помощью экспорта Eclipse и (2) путем анализа файлов на сервере Glassfish. Все Apache shiro jars полностью развернуты в домене domain1/eclipseApps/My-App-root/META-INF/lib (я также опробовал META-INF/классы с одинаковой ошибкой).

Кстати: Когда я добавил банкоматы Apache в домене 1/lib, все сработало нормально.

Таким образом, я предполагаю, что в моем пути к классам что-то не так, так что стеклянная рыба не может найти банки под/META-INF/lib.

Мой pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>OrganizationAndSecurity</groupId> 
    <artifactId>OrganizationAndSecurity</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>ejb</packaging> 
    <name>Organization and security</name> 
    <description>Provide facilities to manage organization units &amp; members, resources and permissions.</description> 

    <build> 
    <sourceDirectory>ejbModule</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>ejbModule</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-ejb-plugin</artifactId> 
     <version>2.5</version> 
     <configuration> 
      <ejbVersion>3.2</ejbVersion> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.shiro</groupId> 
     <artifactId>shiro-core</artifactId> 
     <version>1.2.5</version> 
     <type>ejb</type> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.shiro</groupId> 
     <artifactId>shiro-web</artifactId> 
     <version>1.2.5</version> 
     <type>ejb</type> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.6.1</version> 
     <type>ejb</type> 
    </dependency> 
    </dependencies> 
</project> 

Мой-jar.xml EJB

<?xml version="1.0" encoding="UTF-8"?> 
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd" version="3.2"> 
    <display-name>OrganizationAndSecurity</display-name> 
</ejb-jar> 

Мой GlassFish-jar.xml-EJB

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd"> 
<glassfish-ejb-jar> 
    <enterprise-beans> 
     <ejb> 
      <ejb-name>AuthenticatorMessageBean</ejb-name> 
      <jndi-name>jms/queue/authenticationMessageQueue</jndi-name> 
      <resource-ref> 
       <res-ref-name>ConnectionFactory</res-ref-name> 
       <jndi-name>authenticationMessageConnectionFactory</jndi-name> 
      </resource-ref> 
     </ejb> 
    </enterprise-beans> 
</glassfish-ejb-jar> 

Я использую Eclipse, Mars.2 (4.5.2), Glassfish 4.1, Java (JDK) 1.8.0_25

Вопрос: Почему мой сервер Glassfish не может найти банки, развернутые в META-INF/lib для моего ejb-проекта и, впоследствии, не может найти класс, используемый в jar-файле Apache shiro?

ответ

1

EJB-проект не может включать в себя дополнительные банки, если вам нужно, то вы будете нуждаться в ухо-проект, который включает в себя как ваш EJB-проект в качестве сторонних библиотек

уха проекта + EJB-проект + apache-shiro

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