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

<淘宝热门商品:
 

95.00 元  

韩国正品专卖!Intercrew LED手表/男

 

¥:338.00 

【澳钻/Swarovski/手机钻/美甲钻/婚沙礼服钻】专卖店

【五钻信誉】Swarovski々豪华水晶甲々1200颗338元[包快递]


来源:程序员网

小小豆叮

0 Responses to "EJB访问Weblogic用T3"

发表评论