[jboss-user] [JNDI/Naming/Network] - Re: JNDI Problem
jaikiran
do-not-reply at jboss.com
Sat Mar 3 12:28:31 EST 2007
Here's the remote session bean facade which you can use in JBoss-3.2.x to work with datasources from the standalone client:
Home interface:
package org.myapp.ejb;
|
| import java.rmi.RemoteException;
| import javax.ejb.CreateException;
| import javax.ejb.EJBHome;
|
| /**
| *
| * @author Jaikiran Pai
| *
| */
| public interface HelloWorldHome extends EJBHome {
|
| public HelloWorldRemote create() throws RemoteException, CreateException;
|
| }
Remote interface:
package org.myapp.ejb;
|
| import java.rmi.RemoteException;
| import javax.ejb.EJBObject;
|
| /**
| *
| * @author Jaikiran Pai
| *
| */
| public interface HelloWorldRemote extends EJBObject {
|
| public void workWithDatabase(String dataSourceName) throws RemoteException;
|
| }
The bean class:
package org.myapp.ejb;
|
| import java.rmi.RemoteException;
|
| import javax.ejb.EJBException;
| import javax.ejb.SessionBean;
| import javax.ejb.SessionContext;
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.naming.NamingException;
| import javax.sql.DataSource;
|
| /**
| *
| * @author Jaikiran Pai
| *
| */
| public class HelloWorldBean implements SessionBean {
|
| /**
| * Session context
| */
| private SessionContext sessionCtx;
|
| /**
| * Default constructor
| *
| */
| public HelloWorldBean() {
|
|
| }
|
| /**
| * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
| */
| public void setSessionContext(SessionContext sessionCtx) throws EJBException, RemoteException {
| this.sessionCtx = sessionCtx;
| }
|
| public void ejbActivate() throws EJBException {
|
| }
|
| public void ejbPassivate() throws EJBException {
| }
|
| public void ejbRemove() throws EJBException {
| }
|
|
| public void ejbCreate() {
| }
|
| /**
| *
| * @param dataSourceName
| * @throws RemoteException
| */
| public void workWithDatabase(String dataSourceName) throws RemoteException {
|
| try {
| Context ctx = new InitialContext();
| DataSource dataSource = (DataSource) ctx.lookup(dataSourceName);
| System.out.println("Got datasource: " + dataSource);
| /*
| * TODO: Do something with the datasource
| */
|
| } catch (NamingException ne) {
| /*
| * TODO: Do exception handling
| */
| ne.printStackTrace();
| throw new RemoteException("Exception while working with datasource",ne);
| }
|
| }
|
| }
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
| <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" 'http://java.s
| un.com/dtd/ejb-jar_2_0.dtd'>
|
| <ejb-jar >
|
| <description><![CDATA[No Description.]]></description>
| <display-name>Sample EJB Application</display-name>
|
| <enterprise-beans>
|
| <!-- Session Beans -->
| <session >
|
| <ejb-name>HelloWorldBean</ejb-name>
| <remote>org.myapp.ejb.HelloWorldRemote</remote>
| <home>org.myapp.ejb.HelloWorldHome</home>
| <ejb-class>org.myapp.ejb.HelloWorldBean</ejb-class>
| <session-type>Stateless</session-type>
| <transaction-type>Container</transaction-type>
|
|
| </session>
|
|
| </enterprise-beans>
|
| <!-- Assembly Descriptor -->
| <assembly-descriptor >
|
| <!-- transactions -->
| <container-transaction >
| <method >
| <ejb-name>HelloWorldBean</ejb-name>
| <method-name>*</method-name>
| </method>
| <trans-attribute>required</trans-attribute>
| </container-transaction>
| </assembly-descriptor>
|
|
|
| </ejb-jar>
jboss.xml:
<?xml version="1.0" encoding="UTF-8"?>
| <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
|
| <jboss>
| <enterprise-beans>
| <session>
| <ejb-name>HelloWorldBean</ejb-name>
| <jndi-name>HelloWorld</jndi-name>
| </session>
| </enterprise-beans>
| </jboss>
The standalone class:
package org.myapp.client;
|
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.rmi.PortableRemoteObject;
|
| import org.myapp.ejb.HelloWorldHome;
| import org.myapp.ejb.HelloWorldRemote;
|
|
|
| /**
| *
| * @author Jaikiran Pai
| *
| */
| public class TestClient {
|
| public static void main(String args[]) {
| try {
| Context ctx = new InitialContext();
| Object obj = ctx.lookup("HelloWorld"); HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow(obj,HelloWorldHome.class);
| HelloWorldRemote helloWorldRemote = home.create();
|
| helloWorldRemote.workWithDatabase("java:/DefaultDS");
| System.out.println("Done with the datasource");
|
| } catch (Exception e) {
| /*
| * TODO: Do exception handling
| */
| e.printStackTrace();
| }
| }
| }
You will have learn EJB to understand this. Good luck :-)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4024865#4024865
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4024865
More information about the jboss-user
mailing list