EJB访问Weblogic用T3

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>


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;

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值