Kategorie-Archiv: EJB 3.0

New JBoss with Eclipse howto from Gerhard Schuster

Gerhard Schuster is working on some How-to’s about how to use Eclipse 3.3 to develop and connect EJB 3.0 Beans running on JBoss 4.2.

He’s using a lot of screenshots to make it easy to follow his instructions.

I think it is a worthwhile read for anybody interested in this topic who wants some more detail than my article can offer.

You can find Gerhards articles here:

Connect JBoss and Eclipse

Learn how to deploy a bean to JBoss using Eclipse

Using JBoss EJB 3 with Eclipse RCP [Part 5]

Some code to test

To get something working we need to insert some code in our RCP. We will insert it directly in the Application.java. All output will be echo to the console so that there is no need for a GUI:

Application.java
[java]
package bz.jmc.blog.rcp_with_jboss.rcp;

import java.util.Properties;

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

import org.eclipse.core.runtime.IPlatformRunnable;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;

import bz.jmc.blog.tutorial.rcp_with_jboss.ejb.MyTestStatelessSessionRemote;

/**
* This class controls all aspects of the application’s execution
*/
public class Application implements IPlatformRunnable {

/* (non-Javadoc)
* @see org.eclipse.core.runtime.IPlatformRunnable#run(java.lang.Object)
*/
public Object run(Object args) throws Exception {
// EJB-Test
//
Properties properties = new Properties();
properties.put(“java.naming.factory.initial”,
“org.jnp.interfaces.NamingContextFactory”);
properties.put(“java.naming.factory.url.pkgs”,
“=org.jboss.naming:org.jnp.interfaces”);
properties.put(“java.naming.provider.url”,”localhost:1099″);

Context context;
try {
context = new InitialContext(properties);
MyTestStatelessSessionRemote sess =
(MyTestStatelessSessionRemote)
context.lookup(“MyTestStatelessSessionBean/remote”);
System.out.println( sess.sayHello() );
} catch (Exception e) {
e.printStackTrace();
}
// Normal RCP-App Code
Display display = PlatformUI.createDisplay();
try {
int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART) {
return IPlatformRunnable.EXIT_RESTART;
}
return IPlatformRunnable.EXIT_OK;
} finally {
display.dispose();
}
}
}
[/java]

Now click on “Lauch an Eclipse application” in the “Overview”-tab to lauch the RCP. If anything is OK you should see a RCP window and an output similar to this one:

Erfolgreicher Test der RCP

Hopefully this small tutorial is a little helpful.

Using JBoss EJB 3 with Eclipse RCP [Part 4]

Dependencies und Buddy-Policy

First we need to declare the RCP dependend on the JBoss-plugin.

Declaring dependency

Now we define the Buddy-Policy in the JBoss plugin ( insert “Eclipse-BuddyPolicy: registered” in the Manifest.MF) and let the RCP-Plugin register as a buddy (insert “Eclipse-RegisterBuddy: org.jboss.client” in the Manifest.MF). Please ensure that there is always a blank line at the end of the Manifest.MF and there is no whitespace in front of the “Eclipse-…”!

Buddy-Policy festlegen
Buddy-Policy festlegen

Insert the EJB-Classes in our RCP-Plugin

We need to let our plugin know the EJBs it should work with. Inside the project we create a new folder called “libs” and copy the file MyTestStatelessSession.jar into it. Now we will refresh the project and add the JAR to the build path by right-clicking on the file and choose Build Path > Add to Build Path. The result should look like this:

Adding EJB-Classes

As a last step we need to add the EJB-Jar to the classpath under Runtime. Without this step our JBoss-Plugin is not able to find the classes at runtime.

EJB-Jar dem Classpath hinzufügen

In the last part I will show you how to create some test code to ensure anything is working.

Using JBoss EJB 3 with Eclipse RCP [Part 3]

Creating the RCP-Plugins

Using the menus File > New > Project we will create our RCP. All details you can find in the following 4 screenshots:

RCP Plugin Projekt anlegen
RCP Plugin Projekt anlegen
RCP Plugin Projekt anlegen
RCP Plugin Projekt anlegen

Creating the JBoss-Client-Plugin

Our plugin with the JBoss-Classes will be created similar to the RCP-plugin. But in this case we are using “Plug-in from existing JAR archives”.

Create JBoss-Client-Plugin

In the next dialog we are choosing Add external and select all JARs in the %JBOSSHOME%/client folder. The auth.conf file should not be selected!

Create JBoss-Client-Plugin
Create JBoss-Client-Plugin

Now we need to define the dependency between the two plugins and create a Buddy-Policy. I’ll show that to you in part 4.

Using JBoss EJB 3 with Eclipse RCP [Part 2]

The Demo-EJB

As a simple example EJB, which will be used in our RCP, we will use a small EJB 3.0 stateless session bean. It’s a typical “Hello World” bean:

MyTestStatelessSessionRemote.java
[java]
package bz.jmc.blog.tutorial.rcp_with_jboss.ejb;

import javax.ejb.Remote;

@Remote
public interface MyTestStatelessSessionRemote {

public String sayHello();

}
[/java]
MyTestStatelessSessionBean.java
[java]
package bz.jmc.blog.tutorial.rcp_with_jboss.ejb;

import javax.ejb.Stateless;

@Stateless
public class MyTestStatelessSessionBean implements MyTestStatelessSessionRemote {

public String sayHello() {
return “Hello World! I’m an Stateless-Session-Bean”;
}

}
[/java]
This Bean will be packaged in a JAR-file called MyTestStatelessSession.jar and needs to be deployed to JBoss. After deployment JBoss should echo something like this:
[code]
11:31:25,651 INFO [Server] JBoss (MX MicroKernel) [4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 1m:21s:287ms
11:39:01,958 INFO [Ejb3Deployment] EJB3 deployment time took: 88
11:39:02,027 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=MyTestStatelessSession.jar, name=MyTestStatelessSessionBean, service=EJB3 with dependencies:
11:39:03,276 INFO [EJBContainer] STARTED EJB: bz.jmc.blog.tutorial.rcp_with_jboss.ejb.MyTestStatelessSessionBean ejbName: MyTestStatelessSessionBean
11:39:03,697 INFO [EJB3Deployer] Deployed: file:/Users/jmc/Applications/jboss-4.0.4.GA/server/default/deploy/MyTestStatelessSession.jar
[/code]

In the next part I’ll show you how to create our simple RCP application.