maven zależności cykliczne
Mam modułowy projekt maven, w którym dwa moduły „BIZ” i „EJB” zawierają coś takiego:
//PART OF "BIZ" Module:
public interface MyInterface{
public void foo();
}
............................................
public class ImplFactory{
public static MyInterface getInterfaceImplementation(){
MyInterface ret=null;
Class<? extends MyInterface> cl = null;
try {
cl= (Class<? extends MyInterface>) Class.forName("InterfaceImpl");
ret= cl.newInstance();
}
....
ret ret;
}
.......................................
public class MyClassX{
public static void doSomethingX(){
}
}
//PART OF "EJB" Module:
public class InterfaceImpl implements MyInterface
@EJB
private MyEJB1 ejb1;
public void foo(){
ejb1.doSomething();
}
........................................
@Stateless
public class MyEJB1{
public void doSomething(){
...
MyClassX.doSomethingX();
....
}
}
Jak widzicie,„EJB” zależy od „BIZ” jak to używaMyClassX (w rzeczywistości używa kilku klas BIZ). To powód dlaczegoImplFactory wykorzystuje odbicie do utworzenia instancjiInterfejsImpl. Problemem jestcl.newInstance () rzuciClassCastException ponieważ 2 moduły należą odpowiednio do WAR i JAR (moduł „EJB” jest kompilowany, podając type = „ejb” i używając wtyczki ejb maven) i używaj różnych ClassLoaders (działa na JBoss 7). Z drugiej strony,InterfejsImpl nie można przenieść do BIZ tak, jak tego potrzebujeMyEJB1 za swoją pracę, a to wprowadziłoby cykliczną zależność.
Moje pytanie brzmi: jak rozwiązać tę trudną sytuację (programowo lub poprzez zmianę konfiguracji)? Mam nadzieję że możesz mi pomóc! Dzięki!