J2EE - EJB Remote Client with Eclipse OEPE on Weblogic (Outside the container)

Java Conceptuel Diagram

About

How to create an EJB Remote Client with Eclipse OEPE on Weblogic ?

To understand how an EJB is called through lookup, you must first read this article: Java - Java Naming and Directory Interface (JNDI).

In this example, I create a simple EJB with a method which returns and Hello World string.

Steps

Configure the build path

wlfullclient.jar

Create wlfullclient.jar by running in WLS_HOME/server/lib, the following command

java -jar wljarbuilder.jar

and add it to the classpath.

wlfullclient.jar is not dependent on external jars, and can be copied to client machines.

EJB project

Add the EJB project to the client classpath:

Eclipse Project Build Path

Create the EJB Remote Client Class

package ejbclient;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import nl.hotitem.ejb.HotStarsEjbRemote;

public class EjbClient {

	public static void main(String[] args) {

		Context ctx = null;

		Hashtable<String, String> ht = new Hashtable<String, String>();
		ht.put(Context.INITIAL_CONTEXT_FACTORY,
				"weblogic.jndi.WLInitialContextFactory");
		ht.put(Context.PROVIDER_URL, "t3://192.168.2.40:7001");
		ht.put(Context.SECURITY_PRINCIPAL, "weblogic");
		ht.put(Context.SECURITY_CREDENTIALS, "welcome1");

		try {

			ctx = new InitialContext(ht);
			System.out.println("Initial Context created");

			// We are requesting the remote bean from the JNDI context
			HotStarsEjbRemote bean = (HotStarsEjbRemote) ctx
					.lookup("ejb.DataInsight-HotStarsEjb#nl.hotitem.ejb.HotStarsEjbRemote");
			System.out.println("lookup successful");

			String MyHello = bean.sayHello("Nicolas");
			System.out.println("EJB method called and say: " + MyHello);

		} catch (NamingException e) {
			// a failure occurred
			System.out.println("A Naming failure occurred" + e);
		} finally {
			try {
				ctx.close();
			} catch (Exception e) {
				System.out.println("A Context Close exception occurred" + e);
			}
		}

	}

}

Console Results

Initial Context created
lookup successful
EJB method called and say: Hello Nicolas It’s Working!

Support

java.rmi.UnmarshalException: Method not found

Exception in thread "main" javax.ejb.EJBException: Could not unmarshal method ID; 
nested exception is: java.rmi.UnmarshalException: Method not found: 'sayHello(Ljava.lang.String;)'; 
nested exception is: java.rmi.UnmarshalException: Method not found: 'sayHello(Ljava.lang.String;)'
java.rmi.UnmarshalException: Method not found: 'sayHello(Ljava.lang.String;)'
	at weblogic.rmi.internal.MethodDescriptor.getCanonical(MethodDescriptor.java:268)

Possible problems:

  • did you give the good Weblogic server DNS
  • Are the modifications published

Documentation / Reference





Discover More
J2ee Architecture
Java - EJB: Enterprise Java Bean (enterprise beans)

Enterprise beans are server-side J2EE components and run on the J2EE server in their EJB container which manages their execution. (Enterprise JavaBeans component model) They handle the business logic...
Obiee Obiactionparameter
OBIEE 11G - Action Framework - How to create and invoke a Java Method (EJB)

This article gives insights on how an EJB session bean must be created and then invoked by the OBIEE action framework. JNDI Location: Action Framework expects EJBs to be deployed to the default...



Share this page:
Follow us:
Task Runner