I'm new to Open Liberty. I need to call an EJB 3.1 deployed on WAS 8.5 but I can't find any documentation or tutorial on how to do it.
Is this feature present in OpenLiberty? Which features should i enable on my server.xml? And what is the code to call the server?
UPDATE
After reading some documentation, I've tried to make the call with the following server.xml
<server description="Sample Liberty server">
<featureManager>
<feature>webProfile-7.0</feature>
</featureManager>
<variable name="default.http.port" defaultValue="9080" />
<variable name="default.https.port" defaultValue="9443" />
<variable name="app.context.root" defaultValue="ServletSample" />
<webApplication location="open-liberty-template.war"
contextRoot="/test" />
<keyStore id="defaultKeyStore" password="keypassword"/>
<!-- EXAMPLE TRACE: when you visit the /health endpoint, additional traces
are logged in the trace.log file. -->
<!-- <logging traceSpecification="com.ibm.ws.microprofile.health.*=all"></logging> -->
<httpEndpoint host="*" httpPort="${default.http.port}"
httpsPort="${default.https.port}" id="defaultHttpEndpoint" />
<httpDispatcher enableWelcomePage="false" />
</server>
and Servlet
@WebServlet("/RemoteTxAttrServlet")
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Properties p = new Properties();
// p.put(Context.PROVIDER_URL, "iiop://10.64.2.93:2821");
Object found = null;
try {
Context c = new InitialContext();
found = c.lookup(
"corbaname::ip:port#ejb/global/ear-module/ejb-module/BeanName!package.Interface");
} catch (NamingException e) {
e.printStackTrace();
}
System.out.println(found);
}
}
but I obtain the following Exception:
[INFO] [err] javax.naming.NameNotFoundException: Intermediate context does not exist: corbaname::10.64.2.93:2821#ejb/global
[INFO] [err] at com.ibm.ws.jndi.internal.ContextNode.getTargetNode(ContextNode.java:125)
[INFO] [err] at [internal classes]
[INFO] [err] at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
[INFO] [err] at it.aci.grpc.services.TestServlet.doGet(TestServlet.java:27)
[INFO] [err] at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
[INFO] [err] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
[INFO] [err] at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1258)
[INFO] [err] at [internal classes]
[INFO] [err] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[INFO] [err] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[INFO] [err] at java.base/java.lang.Thread.run(Thread.java:834)
furthermore i cannot find the javax.rmi.PortableRemoteObject on the classpath to norrow the Object reference to my target remote interface.
How can i fix it?