У меня есть корпоративное приложение с EJB, реализующим бизнес-интерфейс @Remote, к которому я хотел бы получить доступ из управляемого бина JSF на другом компьютере.Они оба являются машинами для разработки с Netbeans 7 и Glassfish 3.1.Я считаю, что ответ лежит на CORBA, но я не думаю, что я делаю это правильно.
Есть ли лучший вариант, чем CORBA для этого?
Вот где я нашел, как использовать corbaname: iiop http://download.oracle.com/docs/cd/E19798-01/821-1752/beanv/index.html
Это мой интерфейс EJB:
package remote.ejb;
import javax.ejb.Remote;
@Remote
public interface HelloRemote {
public String getHello();
}
Приложение для предприятия: RemoteEJBTest Java EE Модуль: RemoteEJBTest-ejb
EJB:
package remote.ejb;
import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
public class HelloBean implements HelloRemote {
@Override
public String getHello() {
return "Hello World!";
}
}
Веб-приложение: RemoteWebTest
package hello.web;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import remote.ejb.HelloRemote;
@ManagedBean
@RequestScoped
public class Hello {
private HelloRemote helloBean;
private String hello;
public Hello() throws NamingException {
InitialContext ctx = new InitialContext();
Object obj = ctx.lookup("corbaname:iiop:remote_ip:3700#RemoteEJBTest/RemoteEJBTest-egb/HelloBean");
helloBean = (HelloRemote) PortableRemoteObject.narrow(obj,HelloRemote.class);
}
public String getHello(){
return helloBean.getHello();
}
}
Вот трассировка стека http://pastebin.com/PxNCKCg4
соответствующие части трассировки стека:
com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: hello.web.Hello.
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:193)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
Caused by: javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
at com.sun.jndi.cosnaming.ExceptionMapper.mapException(ExceptionMapper.java:44)
at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:485)
Caused by: org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:72)
at org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:251)
at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:471)
... 59 more
Что лучшеспособ разделения EJB на несколько удаленных машин?