EJB访问Weblogic用T3



package com.newmodern.etm.utility;



/**

 * Title:

 * Description:

 * Copyright:    Copyright (c) 2001

 * Company: newmodern

 * @author Colin

 * @version 1.0

 */



import java.util.*;

import javax.naming.*;

import javax.ejb.*;

import javax.rmi.PortableRemoteObject;

import javax.sql.*;

import java.sql.*;



public class EJBUtil {



    private static Context context = null;

    private static final String url = "t3://localhost:7001";

    private static final String JDBC_JNDI = "jdbc/XAOracle";



    public static Object getEJBHome(String lookupName, Class homeClass) {

        try {

            if (context==null) {

                context = getInitialContext();

            }

            Object home = PortableRemoteObject.narrow(

                                context.lookup(lookupName),

                                homeClass);

            return home;

        } catch (NamingException ne) {

            throw new EJBException(ne.getMessage());

        }

    }



    public static Connection getConnection(String lookupName) {

        try {

            if (context==null) {

                context = getInitialContext();

            }

            DataSource ds = (DataSource)PortableRemoteObject.narrow(

                                context.lookup(lookupName),

                                DataSource.class);

            return ds.getConnection();

        } catch (NamingException ne) {

            throw new EJBException(ne.getMessage());

        } catch (SQLException e) {

            throw new EJBException(e.getMessage());

        }

    }



    public static Connection getConnection() {

        try {

            if (context==null) {

                context = getInitialContext();

            }

            DataSource ds = (DataSource)PortableRemoteObject.narrow(

                                context.lookup(JDBC_JNDI),

                                DataSource.class);

            return ds.getConnection();

        } catch (NamingException ne) {

            throw new EJBException(ne.getMessage());

        } catch (SQLException e) {

            throw new EJBException(e.getMessage());

        }

    }



    private static Context getInitialContext() throws NamingException {

        try {

          Properties h = new Properties();

          h.put(Context.INITIAL_CONTEXT_FACTORY,

              "weblogic.jndi.WLInitialContextFactory");

          h.put(Context.PROVIDER_URL, url);

          return new InitialContext(h);

        } catch (NamingException ne) {

            throw ne;

        }

    }



}



我们可以用下面方式调用该类: lookup找Home:


    public void insertCategory(String codeSubscriber, String systemUsed,

        String codeCategory, String codeCategoryGroup, String categoryDesc,

        String actionBy, Timestamp newTimestamp)

        throws ETMDataAccessException, ETMDataAlreadyExistsException {

            try {

                CategoryHome home =(CategoryHome)EJBUtil.getEJBHome(

                "MyMasterCategory",CategoryHome.class);

                home.create(codeSubscriber, systemUsed, codeCategory,

                codeCategoryGroup, categoryDesc, actionBy, newTimestamp);

            } catch (DuplicateKeyException e) {

                throw new ETMDataAlreadyExistsException();

            } catch (RemoteException e) {

                throw new ETMDataAccessException(e);

            } catch (CreateException e) {

                throw new ETMDataAccessException(e);

            }

    }



    String subscriberSql = "Select code_subscriber, subscriber_name "  

        "From subscriber Where status = 'A' ";



    public Collection getSubscriberList() throws ETMDataAccessException {

        Connection con = null;

        PreparedStatement pStmt = null;

        ResultSet res = null;

        SubscriberEntity subscriber = null;

        Collection page = new ArrayList();

        try {

           //getConnection();

            con = EJBUtil.getConnection("jdbc/XAOracle");

            pStmt = con.prepareStatement(subscriberSql);

            SystemLogger.getInstance().logDebug("SQL:" subscriberSql "<-START->");

            res = pStmt.executeQuery();

            SystemLogger.getInstance().logDebug("SQL:" subscriberSql "<-END->");

            while (res.next()) {

                subscriber = new SubscriberEntity(

                    res.getString("code_subscriber"),

                    res.getString("subscriber_name"));

                page.add(subscriber);

            }

        } catch (SQLException e) {

            throw new ETMDataAccessException(e);

        } finally {

           if (res != null) {

               try {

                   res.close();

               } catch (Exception e) {}

           }

            if (pStmt != null) {

                try {

                    pStmt.close();

                } catch (Exception e) {}

            }

            if (con != null) {

                try {

                    con.close();

                    con = null;

                } catch (Exception e) {}

            }

        }

        return page;

    }



你可能感兴趣的:(EJB访问Weblogic用T3)