Вызов EJB из WAR вне EAR внутри одного WAS
Структура моего проекта будет такой:
-> Сервер приложений WebSphere (WAS)
-----> EAR
--------> Модули EJB
--------> EJB Client
-----> WAR
--------> Сервер веб-службы
как я могу позвонить или использовать EJB из этой войны?
я попробовал это прежде, чтобы позвонить в EJB, когда война в ухе:
public SomeEJBServiceClassBusiness getBusinessClass() throws RemoteException {
SomeEJBServiceClassBusiness SomeEJBServiceClassBusiness = null;
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "corbaloc:rir:/NameServiceServerRoot");
Context context = new InitialContext(env);
SomeEJBServiceClassHome remoteObject = (SomeEJBServiceClassHome) getRemoteObject(context, SomeEJBServiceClassHome.class.getName());
SomeEJBServiceClassBusiness = remoteObject.create();
} catch (NamingException e) {
LOG.error("Error getting EJB " + SomeEJBServiceClassHome.class.getName());
} catch (CreateException e) {
LOG.error("Error creating EJB " + SomeEJBServiceClassHome.class.getName());
}
return SomeEJBServiceClassBusiness;
}
public Object getRemoteObject(Context ctx, String jndiName) throws NamingException {
Object obj;
StringBuffer fullJndiName;
try {
fullJndiName = new StringBuffer();
fullJndiName.append("java:comp/env/").append(jndiName);
LOG.debug("Trying connect to [" + fullJndiName.toString() + "]");
obj = ctx.lookup(fullJndiName.toString());
} catch (NamingException e) {
try {
fullJndiName = new StringBuffer();
fullJndiName.append("java:comp/").append(jndiName);
LOG.debug("Trying connect to [" + fullJndiName.toString() + "]");
obj = ctx.lookup(fullJndiName.toString());
} catch (NamingException e0) {
try {
fullJndiName = new StringBuffer();
fullJndiName.append(jndiName);
LOG.debug("Trying connect to [" + fullJndiName.toString() + "]");
obj = ctx.lookup(fullJndiName.toString());
} catch (NamingException e1) {
throw e;
}
}
}
return obj;
}
Но теперь, когда мне нужно переместить WAR за пределы EAR, это больше не работает. Потому что мне нужно скопировать один JAR(из EAR) с EJBHome и EJBBusiness в качестве библиотеки для моей WAR. Есть ли способ для приложения WAR использовать EJB внутри EAR(другое приложение) без копирования jar-файла?