Obtain a remote connection to a DataSource or EJB (Weblogic)Tag(s): Servlet/JSP
It's possible to obtain a remote connection to a Datasource defined in the application server. In this example, the connection is made to a Weblogic server so you need wlclient.jar in the classpath.
import java.sql.*; import java.util.Properties; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import javax.sql.DataSource; public class RemoteConnection { private RemoteConnection() { } public static void main(String args[]) throws Exception { Properties env = new Properties(); String datasourceName = "mydatasourcename"; env.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory"); env.put("java.naming.provider.url", "t3://xxxxxxxx-xxxxx.xxx.xxxxx:7101"); InitialContext ctxProxy = new InitialContext(env); Object dsObj = ctxProxy.lookup(datasourceName); DataSource ds = (DataSource) PortableRemoteObject.narrow(dsObj, javax.sql.DataSource.class); PreparedStatement ps = null; Connection conn = null; ResultSet result = null; try { conn = ds.getConnection(); String SelectString = "SELECT NAME, ADDRESS FROM EMPLOYEE"; ps = conn.prepareStatement(SelectString); for (result = ps.executeQuery(); result.next();) { String data = result.getString(1) + " : " + result.getString(2); System.out.println(data); } } catch (Exception ex) { ex.printStackTrace(); } finally { result.close(); ps.close(); conn.close(); conn = null; ps = null; result = null; } } }
import java.util.Properties; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import com.company.common.myejb.*; public class RemoteEJBCall { private RemoteEJBCall() { } public static void main(String args[]) throws Exception { Properties env = new Properties(); env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); env.put(javax.naming.Context.PROVIDER_URL, "t3://xxxxxxxx-xxxxx.xxx.xxxxx:7101"); InitialContext ctx = new InitialContext(env); Object obj = ctx.lookup("common/MyEJB"); MyEJBHome home = (((MyEJBHome) PortableRemoteObject .narrow(obj, MyEJBHome.class))); MyEJB myEJB = home.create(); System.out.println(myEJB.doit()); } }