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

> Procedural Languages > Java

1 - 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.

Advertising

3 - Steps

3.1 - Configure the build path

3.1.1 - 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.

3.1.2 - EJB project

Add the EJB project to the client classpath:

3.2 - 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);
			}
		}
 
	}
 
}

4 - Console Results

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

5 - Support

5.1 - 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
Advertising

6 - Documentation / Reference

lang/java/ejb_client.txt · Last modified: 2017/02/12 21:06 by gerardnico