У меня проблемы с выполнением этого руководства для "извлечения" моих интерфейсов и сущностей из моего EAR для использования их из другого веб-приложения:
- Я использую NetBeans 6.8 и Glassfish 3.0.1
- Проект "Библиотека классов Java"
- содержит все сущности и интерфейсы
- Проект "Приложение Java EE"
- библиотека классов, добавленная в проект, упакована в EAR
- содержит реализации EJB, MDB, Test
- Проект "Java Web Application"
- библиотека классов, добавленная в проект, упакована в WAR
- содержит интерфейс REST
Когда я собираю и внедряю веб-приложение, все идет хорошо.
Когда я собираю приложение Java EE, я вижу, что включается jar-файл (интерфейсы, сущности). Но когда я пытаюсь развернуть EAR, Glassfish отклоняет его с ошибкой java.lang.NoClassDefFoundError:
[#|2010-03-28T18:25:59.875+0200|WARNING|glassfishv3.0|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=28;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: mvs/core/StoreServiceLocal|#]
[#|2010-03-28T18:25:59.876+0200|SEVERE|glassfishv3.0|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=28;_ThreadName=Thread-1;|Exception while deploying the app
java.lang.IllegalArgumentException: Invalid ejb jar [CoreServer]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.
'mvs / core / StoreServiceLocal' - это интерфейс, который определен в файле jar библиотеки.
Что я делаю не так?
Я использую аннотации EJB3, поэтому не существует специфического для bean-компонента дескриптора развертывания:
MVS / ядро / ShopperService.java:
@Stateless
public class ShopperService implements ShopperServiceLocal, ShopperServiceRemote {
}
MVS / ядро / ShopperServiceLocal.java:
@Local
public interface ShopperServiceLocal {
}