Я пытаюсь получить доступ к ejb, развернутому на Websphere Liberty 18.0.0.3
Место привязки: java: global / ITSORemote / ITSORemoteEJB / HelloRemoteEJB! Com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote
Моя конфигурация ORB в файле server.xml:
<orb nameService="corbaname::<ipaddress>:2809" iiopEndpointRef="defaultIiopEndpoint">
<iiopEndpoint host= id="defaultIiopEndpoint" iiopPort="2809">
</iiopEndpoint>
</orb>
Я также добавил ejbRemote-3.2 в диспетчере функций
У меня есть два сценария:
1. Доступ к ejb из клиентского кода, работающего на том же сервере - это работает с использованием URL java: global / ITSORemote / ITSORemoteEJB / HelloRemoteEJB! Com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote
2. Доступ к ejb из клиентского кода, запущенного на другом сервере - это не работает с помощью URL
corbaname: :( IPAddress): 2809 # EJB / глобальный / ITSORemote / ITSORemoteEJB / HelloRemoteEJB com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote
Я использую следующий код для поиска:
package com.ibm.remoteaccess;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Hashtable;
import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote;
/**
* Servlet implementation class RemoteAccess
*/
@WebServlet("/RemoteAccess")
public class RemoteAccess extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
out.println("Hi");
Context ctx = new InitialContext();
Object ejbBusIntf = ctx.lookup("java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote");
HelloRemoteEJBRemote bean = (HelloRemoteEJBRemote)PortableRemoteObject.narrow(ejbBusIntf, HelloRemoteEJBRemote.class);
out.println(bean.hello());
}
catch (NamingException e) { // Error getting the business interface
out.println(e);
}
}
}
В консоль также не выдается ошибка. В чем может быть проблема?