下面这个例子也许对你有所有启发,我用的是Hibernate+Spring,这个是我做实际开发的一个项目的一部分。在Spring注入的时候调用了Hibernate的dao
public com.linkage.lcvas.interfaces.provinceforcsss.OrderResult order(java.lang.String senderID, java.lang.String timeStamp, java.lang.String account, java.lang.String cityCode, java.lang.String actionType, java.lang.String transactionID, java.lang.String productID, java.lang.String passWord) throws java.rmi.RemoteException {
        OrderResult result = null;
       try {
           HttpServlet servlet = (HttpServlet) MessageContext.getCurrentContext().
               getProperty(HTTPConstants.MC_HTTP_SERVLET);
           ApplicationContext context = WebApplicationContextUtils.
               getWebApplicationContext(servlet.getServletContext());           JXVASForCSSBO jxVASForCSSBO = (JXVASForCSSBO) context.getBean(
               "jxvasForCSSSBO");
           result = jxVASForCSSBO.order(senderID,timeStamp, account, cityCode, actionType, transactionID,  productID,passWord/*,startTime,endTime,price*/);
       }
       catch (Exception e) {
           e.printStackTrace();
           result.setErrorDescription(e.getMessage());
       }
       return result;    }

解决方案 »

  1.   

    继续上面的帖子
    在JXVASForCSSBO 里面调用了DAO
    public class JXVASForCSSBOImpl
        implements JXVASForCSSBO,BillingConstants {
        private JXVASForCSSDAO jxvasForCSSSDAO;
        private ProductBO productBO;
        private ProductDAO productDAO;
        private PlatformTransactionManager transactionManager;
        private static final String SALE_CHANLE = "2,3"; //2 – CSSS营业厅销售,3-VNET和CSSS都可以销售
        //JXVAS将CSSS完成的产品定义进行登记(6.1.1 产品信息通知接口)
        public ProductInformationUploadResult productInformationUpload(
            String senderID, String timeStamp, String productID,
            String productType, String productName,
            String productDesc, com.linkage.lcvas.interfaces.provinceforcsss.ServiceList serviceList,
            String startTime, String endTime,
            int price, String packageName, int packagePrice) throws Exception {
            ProductInformationUploadResult result = new ProductInformationUploadResult();
            int rc = Constants.INTERFACE_OK;
            //校验产品编号是否已经存在
            try {
                List _1 = productBO.getProduct(productID);
                if (_1.size() > 0) {
                    rc = Constants.DATA_ERROR;
                    result.setErrorDescription("传入的产品编号已经存在!");
                    result.setResult(rc);
                    return result;
                }
            }
            catch (Exception e) {
                rc = Constants.SYSTEM_ERROR;
                result.setErrorDescription(Constants.getErrorInfo(rc));
                result.setResult(rc);
                return result;
            }
               //_serviceID校验
            if (serviceList == null) {
                rc = Constants.DATA_ERROR;
                System.out.println("传入的产品服务列表为空,传入数据格式不正确!");
                result.setErrorDescription("传入的产品服务列表为空,传入数据格式不正确!");
                return result;
            }
            System.out.println("传入的ServiceList对象中的_serviceID []的长度是: " + _serviceID.length);
            // 业务处理
            String servicePackageID = "";
            System.out.println("开始事务");
            //-----------------声明事务--------------------//
            DefaultTransactionDefinition def = new DefaultTransactionDefinition();
            def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
            TransactionStatus status = this.transactionManager.getTransaction(def);        try {
                //1.写服务包表,服务包编号是自动生成的
                Servicepackage servicePackage = new Servicepackage();
                //服务包名称
                servicePackage.setBundlename(packageName);
                //服务包周期(单位:月)
                servicePackage.setLifecycle(new Long(1));
                jxvasForCSSSDAO.insertServicePackage(servicePackage);
                //服务包编号的取得
                servicePackageID = servicePackage.getBundleid().toString();
                //向服务包内容表插入数据
                for (int i = 0; i < _serviceID.length; i++) {
                 Servicepackagedetail servicePackageDetail = new Servicepackagedetail();
                    ServicepackagedetailKey servicePackageDetailPK = new ServicepackagedetailKey();
                    servicePackageDetailPK.setBundleid(new Long(servicePackageID));
                    servicePackageDetailPK.setServiceid(_serviceID[i]);
                    servicePackageDetailPK.setServiceitemid(_serviceID[i] + "00000000000000000001");
                    servicePackageDetail.setId(servicePackageDetailPK);
                    jxvasForCSSSDAO.insertServicePackageDetail(servicePackageDetail);
                }
                //写产品价格地市表
                Productprice productPrice = new Productprice();
                ProductpriceKey productPriceKey = new ProductpriceKey();
                productPriceKey.setProductid(productID);
                //0标识的是江西省中心的代码
                productPriceKey.setAreaid("700");
                productPriceKey.setSalechannel("2"); //2 – CSSS营业厅销售
                productPrice.setId(productPriceKey);
                productPrice.setPrice(new Long(price));
                productPrice.setDealtime(new java.util.Date());
                jxvasForCSSSDAO.insertProductPrice(productPrice);
                //写产品定义表
                Vnetproduct product = new Vnetproduct();
                Integer fee = new Integer(0);
                product.setProductid(productID);
                product.setSpid("15999999"); //CSSS产品产品的虚拟SPID
                product.setStatus("00");
                product.setProductsource(new Integer(2)); //2 – CSSS营业厅定义
                product.setSalechannel("2"); //2 – CSSS营业厅销售
                product.setBundleid(new Long(servicePackageID));
                product.setProductname(productName);
                product.setEffectdate(Date.parseTimeStamp(startTime));
                product.setExpiredate(Date.parseTimeStamp(endTime));
                product.setDescription(productDesc);
                product.setOrderflag("1");
                jxvasForCSSSDAO.insertProduct(product);
                //插入产品明细表
                for (int i = 0; i < _serviceID.length; i++) {
                    Vnetproductdetail vnetproductdetail = new Vnetproductdetail();
                    VnetproductdetailKey vnetproductdetailKey = new VnetproductdetailKey();
                    vnetproductdetailKey.setProductid(productID);
                    vnetproductdetailKey.setServiceid(_serviceID[i]);
                    vnetproductdetailKey.setServiceitemid(_serviceID[i] + "00000000000000000001");
                    vnetproductdetail.setId(vnetproductdetailKey);
                    jxvasForCSSSDAO.insertVnetproductdetail(vnetproductdetail);
                }
                /*
                 省Vnet中心和营销支撑系统完成产品定义后,
                将相关的产品信息上传全国中心平台省Vnet中心和营销支撑系统完成产品定义后,
                 将相关的产品信息上传全国中心平台
                 */
           }
            catch (Exception e) {
                //回滚事务
                transactionManager.rollback(status);
                rc = Constants.SYSTEM_ERROR;
                result.setResult(rc);
                result.setErrorDescription(Constants.getErrorInfo(rc));
                //-----------------------------------------------            return result;
            }
            //-----------------提交事务--------------------//
            transactionManager.commit(status);
            result.setResult(Constants.INTERFACE_OK);
            result.setErrorDescription(Constants.getErrorInfo(Constants.INTERFACE_OK));
            return result;
        }
    }