posts - 165, comments - 198, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

 引用:http://bbs.mysql.cn/thread-9135-1-2.html
 引用:21. 触发程序

delimiter //
create trigger a_bi
before 
insert on a
for each row Begin
    
if new.s2=0 then
      
if(new.s3=1then
        
insert into b(s2) values(new.s1);
      elseif(new.s3
=2)then
        
insert into c(s2) values(new.s1);
      
end if;
    
end if;
    
end;//
delimiter ;

posted @ 2008-01-24 18:26 G_G 阅读(273) | 评论 (0)编辑 收藏

讨厌(370801149) 14:02:04 ☆づ(18246131) 14:02:45 web.xml,server.xml 讨厌(370801149) 14:02:57 server.xml ☆づ(18246131) 14:02:58 这两个地方,你都配置了吗? 讨厌(370801149) 14:03:01 en 讨厌(370801149) 14:03:14 jdbc icijavax.sql.DataSourceContainer 讨厌(370801149) 14:03:17 web.xml 讨厌(370801149) 14:03:28 WEB-INF/web.xml 讨厌(370801149) 14:03:33 context.xml

posted @ 2008-01-24 14:12 G_G 阅读(200) | 评论 (0)编辑 收藏

1。存储过程实现:
引用:20.2.1. CREATE PROCEDURE和CREATE FUNCTION(mysql在线文档)

--test.sql

DELIMITER $$
drop procedure if exists test.sproc $$
create procedure sproc(out param1 int)
begin
    
select count(*into param1 from account;
end $$
DELIMITER ;

命令 cmd-> mysql -u root test<c:\test.sql

使用:
mysql> call sproc(@a);
Query OK, 
0 rows affected (0.00 sec)

mysql
> select @a ;
+------+
| @a   |
+------+
| 1    |
+------+
1 row in set (0.00 sec)



posted @ 2008-01-22 17:58 G_G 阅读(1554) | 评论 (0)编辑 收藏

java 内连
            //用 java jdk URL
            URL httpurl 
= new URL(url);
            HttpURLConnection httpConn 
= null;
            httpConn 
= (HttpURLConnection) httpurl.openConnection();
            httpConn.setRequestMethod(
"POST");
            httpConn.setDoOutput(
true);
            httpConn.setDoInput(
true);
            //
正式连接
            httpConn.getOutputStream();
            /**输入参数
            PrintWriter outs = new PrintWriter(httpConn.getOutputStream());
            outs.print("&back_url=" + returnurl);
            outs.print("&orderid=" + deposit.getOrderId());
            outs.print("&bussinessid=" + SZFConstant.B_ID);
            outs.print("&digestString="
                    + MD5Util.MD5Encode(SZFConstant.B_ID + deposit.getOrderId()
                            + SZFConstant.KEY));
            outs.flush();
            outs.close();

            GET 就不要 说 了  url + 参数
            */

            
byte[] bb = new byte[httpConn.getInputStream().available()];
            httpConn.getInputStream().read(bb);
            //取得数据
            String str 
= new String(bb);

javascript 现在这种取法有个名字叫(ajax)(转)

<html>
<head>
<link href="http://www.cc168.com.cn/css/index.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="http://www.cc168.com.cn/css/framework.css" type="text/css"/>
 
<script language="javascript">
 
 window.onload 
= function()
 {
  CreateDateSelect();
 }

 
var xmlHttp = false;
 
var e;
 
 
//创建XMLHTTP对象
 function getXMLHTTPObj()
 {
  
var C = null;
  
try
  {
     C 
= new ActiveXObject("Msxml2.XMLHTTP");
  }
  
catch(e)
  {
   
try
   {
    C 
= new ActiveXObject("Microsoft.XMLHTTP");
   }
   
catch(sc)
   {
    C 
= null;
   }
  }
  
  
if!&& typeof XMLHttpRequest != "undefined" )
  {
   C 
= new XMLHttpRequest();
  }
  
  
return C;
 }
 
 
//调用远程方法
 function callServer(e)
 { 
  
try
  {
   
if( xmlHttp && xmlHttp .readyState != 0 )
   {
    xmlHttp.abort();
   }
   
   xmlHttp 
= getXMLHTTPObj();
   
   
if( xmlHttp )
   {
    document.getElementById(
"outgroup").style.display = "none";
    
//获取查询日期
    var dateSele = e.options[e.selectedIndex].value;
    document.getElementById(
"date").innerHTML = dateSele + " 开放式基金净值";

    
//构造查询连接字符串
    var url = "https://www.google.com/accounts/ManageAccount";
    
    
//打开连接
   if(navigator.appName == 'Netscape'){
   
try {
    netscape.security.PrivilegeManager.enablePrivilege(
"UniversalBrowserRead");
   } 
catch (e) {
       alert(
"Permission UniversalBrowserRead denied.");
   }}
    xmlHttp.open(
"GET", url, true);
    
//设置回调函数
    xmlHttp.onreadystatechange = updatePage;
    
//发送请求
    xmlHttp.send(null);
   }
   
else
   {
    document.getElementById(
"flag").innerHTML = "XMLHTTP对象创建失败";
   }
  }
  
catch (e)
  {
   document.getElementById(
"flag").innerHTML = "查询错误:" + e;
  }
 }
 
 
//回调处理函数
 function updatePage()
 {
  
try {
   
if (xmlHttp.readyState == 1)
   {
    document.getElementById(
"flag").innerHTML = "正在加载连接对象";
   }

   
if (xmlHttp.readyState == 2)
   {
    document.getElementById(
"flag").innerHTML = "连接对象加载完毕。";
   }

   
if (xmlHttp.readyState == 3)
   {
    document.getElementById(
"flag").innerHTML = "数据获取中";
   }

   
if (xmlHttp.readyState == 4)
   {
    
var response = xmlHttp.responseText;
    document.getElementById(
"out").innerHTML = response;
    document.getElementById(
"outgroup").style.display = "";
   }
  }
  
catch (e)
  {
      document.getElementById(
"flag").innerHTML = "回调处理错误:" + e;
  }
 }

 
//创建日期选择下拉框
 function CreateDateSelect()
 {

  
var html = [];
         
  
for(var iYear=2005; iYear<=2006; iYear ++)
  {
   
forvar iMonth=1; iMonth<=12; iMonth ++ )
   {
    
forvar iDay=1; iDay<=31; iDay ++ )
    { 
    html[html.length] 
= "<option value=\""  + iYear + "\-" + iMonth + "\-" + iDay + "\">" + iYear + "" + iMonth + "" + iDay + "" + "</option>";
    }
   }
  }
      
  document.getElementById(
"dateSele").innerHTML = "<select name=\"dateSele\" id=\"dateSele\" onchange=\"callServer(this);\">" + html.join(""+ "</select>";
 } 
 
</script>


posted @ 2008-01-09 09:46 G_G 阅读(1154) | 评论 (0)编辑 收藏

     摘要: 尝试着继承关系和xdoclet使用后,对数据库面向对象的使用更近一步。这次例子从开始到结束,都没有接触面向结构的数据库设计;并完全在代码中以面向对象的形式来设计的。hbn 的继承映射关系有这几种;继承关系类共同使用一个表; 每个子类一个表(mapping全); 每个具体内一个表(mapping只有父类)。先说说3把,感觉这点最好用-》》继承关系描述:  Animals父类 -- Bird ...  阅读全文

posted @ 2007-12-26 11:41 G_G 阅读(1101) | 评论 (0)编辑 收藏

圣诞将至,许下了一个愿望,希望程序员都是幸福的,快乐的,没有烦恼,没有委屈,爱自己,幸福
(关键的是写出来的代码全都是绿的!)


posted @ 2007-12-24 18:23 G_G 阅读(1189) | 评论 (8)编辑 收藏

学习xdoclet 发现是很有用的。易于规范,使用方便;
参考: http://blog.easyjf.com/html/blog/20061127/3290288676803397.htm
官方完整API: Template Language (*.xdt)

因为参考中:是还是比较复杂的例(数本人愚钝^_^)特留一文:
1>ant编辑文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="xdocletExample" default="doall" basedir=".">
    
<property name="basedir" location="E:\ue_test\xdoclet" />
    
<property name="xdoclet.lib.dir" location="D:\hbn\hibernate-3.2\xdoclet-1.2.3\lib" />

    
<property name="gen.src.dir" location="${basedir}/target" />
    
<property name="src.dir" location="${basedir}/src" />
    
<property name="template.dir" location="${basedir}/template" />
    
<property name="customtag.dir" location="${basedir}/bin" />

    
<path id="xdoclet.lib.path">
       
<fileset dir="${xdoclet.lib.dir}" includes="*.jar" />
    
</path>

    
<taskdef name="xdoclet" classname="xdoclet.DocletTask" classpathref="xdoclet.lib.path" />   

    
<target name="init" />

    
<target name="daogener" depends="init">
       
<xdoclet destdir="${gen.src.dir}">
           
<fileset dir="${src.dir}" includes="${cjava.file}" />
           
<template templateFile="${xdt.file}" acceptInterfaces="false" acceptAbstractClasses="false" destinationfile="{0}DAO.java" />
       
</xdoclet>
    
</target>

    
<target name="doall" depends="daogener,daoimplgener" />

</project>

在运行上面文件时候动态输入参数
 1.依照的 .java 文件( cjava.file );
 2.依照的 .xdt.file 文件( xdt.file );

比如DOS中输入:
E:\ue_test\xdoclet>ant daogener
-Dxdt.file=template\daointerface.xdt
-Dcjava.file=test\TestXDoclet.java

2.参考的java文件(简单过头了 呵呵)
package test;
  
/**
  * @hasRef
  
*/
public class TestXDoclet{
    
/**
     * @ref.model name="sytp"
     
*/
    
private PubSystype sytp;

    
private String gg;
}

3.xdt 模板
  标签解释:
  <XDtClass:ifHasClassTag tagName="hasRef">判断 java文件中有 @hasRef
 
<XDtField:forAllFields1> 循环查找
 
  2>判断有@ref.model name=。。
  <XDtField:ifHasFieldTag tagName="ref.model" paramName="name">
 
  3>取值
  
<XDtField:fieldTagValue tagName="ref.model" paramName="name" />  

package com.hycs.bs.client.itf;

import java.util.List;

//这是 packageName.className 这和好理解
import 
<XDtPackage:packageName />.<XDtClass:className />;

public interface 
<XDtClass:className />DAO {

    //添加
    boolean add(
<XDtClass:className /> instance);
    
    //逻辑添加
    
<XDtClass:ifHasClassTag tagName="hasRef">
        boolean add(
<XDtClass:className /> instance,
                
<XDtField:forAllFields>
                    
<XDtField:ifHasFieldTag tagName="ref.model" paramName="name"> 
                        String 
<XDtField:fieldTagValue tagName="ref.model" paramName="name" />
                    
</XDtField:ifHasFieldTag>
                
</XDtField:forAllFields>);  
    
</XDtClass:ifHasClassTag>

    //更新
    boolean update(
<XDtClass:className /> instance);


    //得到一个对象
    
<XDtClass:className /> get(String pkid);
}

运行DOS->
E:\ue_test\xdoclet>ant daogener
-Dxdt.file=template\daointerface.xdt
-Dcjava.file=test\TestXDoclet.java

得到的代码:
package com.hycs.bs.client.itf;

import java.util.List;

//这是 packageName.className 这和好理解
import test.TestXDoclet;

public interface TestXDocletDAO {

    
//添加
    boolean add(TestXDoclet instance);
    
//逻辑添加
        boolean add(TestXDoclet instance,String sytp); 
    
//更新
    boolean update(TestXDoclet instance);

    
//得到一个对象
    TestXDoclet get(String pkid);
}






posted @ 2007-12-24 17:54 G_G 阅读(1479) | 评论 (0)编辑 收藏

为了了解hbm的rmic真正的威力还有为了更近一步了解;在此特使用文本和dos命令完成这次学习。
在此读者最好先做好不使用 IDE 的准备(^_^!  文本编辑,dos编辑和运行)
阅读需要:
 java,javac,rmiregistry,rmic,ant 等命令有所涉及(只是简单使用,不会也别怕!)

可行性使用说明:
  持久层程序员成功开启rmiregistry服务,在局域网内其他使用数据的队友就只要加载
hbmBean 的映射jar和 dao接口jar后 就可以取得数据。根本感觉不到hbn使用。
优点:
1.其他队员编译classpath中不需要hbm的任何东西,跟关注自己东西。
2.强制接口规范。
3.正交编程。
4.DAO测试性能方便。
5.这还是 EJB 原理,转换容易。

缺点:
1.rmic 突破放火墙能力有限,可以换成EJB
2.大型项目注册服务器,配置繁琐,可以使用EJB3.0
 


使用:
1.jdk1.5
2.jar使用(为了用hbm)     
    jta.jar;
    asm.jar;
    commons-collections-2.1.1.jar;
    commons-logging-1.0.4.jar;
    hibernate3.jar;
    dom4j-1.6.1.jar;
    cglib-2.1.3.jar;
    antlr-2.7.5H3.jar
    MYSQL.jar
3.ant1.7(使用hbm生成 mapping;config...)
4.Middlegen-Hibernate-r5 同上
5.使用文件路径
  E:\rmi_test->
     +-src
     --hibernate3.xml
     --hibernate3_ant.properties

开始:
 1>使用ant 对 hbm  配置映射参考 :ant 项目实际 并使用 hibernate3.xml
    dos 输入 -> ant -f hibernate3.xml ddl2hbm (使用了Middlegen-Hibernate-r5)
             -> ant -f hibernate3.xml create_config (hibernate.cfg.xml建立)
    在 hibernate.cfg.xml中添加-> <mapping resource="hibernate\Liu.hbm.xml" />
    dos 输入 -> ant -f hibernate3.xml hbm2java
 
变成+-src
       |-hibernate
          |-Liu.hbm.xml
          |-Liu.java
       |-hbmConfig
          |-hibernate.cfg.xml
 2>手动建hbmHibernateSessionFactory在hbmConfig文件中(为了简单copy->myeclipes生成的)
package   hbmConfig; 
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
/**
 * Configures and provides access to Hibernate sessions, tied to the
 * current thread of execution.  Follows the Thread Local Session
 * pattern, see {
@link http://hibernate.org/42.html}.
 
*/
public class HibernateSessionFactory {

    
/** 
     * Location of hibernate.cfg.xml file.
     * NOTICE: Location should be on the classpath as Hibernate uses
     * #resourceAsStream style lookup for its configuration file. That
     * is place the config file in a Java package - the default location
     * is the default Java package.<br><br>
     * Examples: <br>
     * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml". 
     * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code> 
     
*/
    
private static String CONFIG_FILE_LOCATION = "/hbmConfig/hibernate.cfg.xml";

    
/** Holds a single instance of Session */
    
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

    
/** The single instance of hibernate configuration */
    
private static final Configuration cfg = new Configuration();

    
/** The single instance of hibernate SessionFactory */
    
private static org.hibernate.SessionFactory sessionFactory;

    
/**
     * Returns the ThreadLocal Session instance.  Lazy initialize
     * the <code>SessionFactory</code> if needed.
     *
     *  
@return Session
     *  
@throws HibernateException
     
*/
    
public static Session currentSession() throws HibernateException {
        Session session 
= (Session) threadLocal.get();

        
if (session == null) {
            
if (sessionFactory == null) {
                
try {
                    cfg.configure(CONFIG_FILE_LOCATION);
                    sessionFactory 
= cfg.buildSessionFactory();
                }
                
catch (Exception e) {
                    System.err.println(
"%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
                }
            }
            session 
= sessionFactory.openSession();
            threadLocal.set(session);
        }

        
return session;
    }

    
/**
     *  Close the single hibernate session instance.
     *
     *  
@throws HibernateException
     
*/
    
public static void closeSession() throws HibernateException {
        Session session 
= (Session) threadLocal.get();
        threadLocal.set(
null);

        
if (session != null) {
            session.close();
        }
    }

    
/**
     * Default constructor.
     
*/
    
private HibernateSessionFactory() {
    }

}

dos中编译->
E:\rmi_test\src>javac -cp   .;D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\hibernate3.jar   
hbmConfig/*.java


3>DAO实现
接口->
package rmic;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface IHello extends Remote {
    
public String sayHello(String id) throws RemoteException;
}

实现类->
package rmic;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
//取消显示指定的编译器警告!
//参考 : http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/SuppressWarnings.html
@SuppressWarnings("serial")
public class Hello extends UnicastRemoteObject implements IHello {
    
public Hello() throws RemoteException {
        
super();
    }
    
    
public void rebind(String name) { 
        
try {
            Naming.rebind(name,
this);
            System.out.println(
"Server is running");
        } 
catch(Exception e) {
            e.printStackTrace();
        }
    }
    
public String sayHello(String id) throws RemoteException {
        System.out.println(
"run Server.");
        
    org.hibernate.Session session 
= hbmConfig.HibernateSessionFactory.currentSession();
    org.hibernate.Query qu 
= session.createQuery("from Liu lt where lt.id=:id");
    hibernate.Liu ll 
= (hibernate.Liu)qu.setString("id"
,id).uniqueResult();
    hbmConfig.HibernateSessionFactory.closeSession();


        
return "Hello "+ll.getName()+" This is processed by RMI";
    }

}

dos编译->
E:\rmi_test\src>javac -cp .;D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.
2\hibernate3.jar  rmic/*.java

4>java注册机开启
E:\rmi_test\src>rmiregistry 1099

5> 本例简单服务器开启
package start;

import java.rmi.RMISecurityManager;
import rmic.Hello ;

public class Start {

    
public static void main(String[] args) {
        
try {
            
//System.setSecurityManager(new RMISecurityManager());
            new Hello().rebind("RMI/Mclaren");
        } 
catch(Exception e) {
            e.printStackTrace();
        }
    }
}

dos编译->E:\rmi_test\src>javac  start/*.java
运行->
java -classpath .;D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\lib\jta.jar;
D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\lib\asm.jar;
D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\lib\commons-collections-2.1.1.jar;
D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\lib\commons-logging-1.0.4.jar;
D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\hibernate3.jar;
D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\lib\dom4j-1.6.1.jar;
E:\lib\MYSQL.JAR;D:\hbn\hibernate-3.2\hibernate-3.2.5.ga\hibernate-3.2\lib\cglib-2.1.3.jar;
E:\and\ant\bin\antlr-2.7.5H3.jar
  start.Start


6>客户端
 得到存根Hello_Stub.class-> E:\rmi_test\src>rmic rmic.Hello
 换个地方:c:\\TT 并copy rmic中的IHello.class和Hello_Stub.class连同目录rmic一同copy
package client;

import java.rmi.Naming;
import rmic.IHello;

public final class Client {
    
public static void main(String[] args) {
        System.out.println(
"client.");
        
try {
            IHello hello 
= (IHello)Naming.lookup("rmi://localhost:1099/RMI/Mclaren");
            System.out.println(hello.sayHello(
"1"));
        } 
catch(Exception e) {
            e.printStackTrace();
        }
    }

}

 dos编译-> C:\TT>javac -d . Client.java
 C:\TT>java client.Client
 client....
 Hello gg This is processed by RMI (gg就是数据 成功! )

mysql> select * from liu;
+----+------+-----+
| id | name | avg |
+----+------+-----+
|  1 | gg   |  24 |
+----+------+-----+








posted @ 2007-12-24 13:36 G_G 阅读(1092) | 评论 (4)编辑 收藏

我 的 春天spring 正式开始 !^_^
spring项目基本需要jar->commons-logging.jar;log4j-1.2.9.jar;spring.jar
参考:http://www.redsaga.com/spring_ref/2.0/html/beans.html

本文主要内容:
1.单多配置文件的使用
2.动态替换类方法(cglib)
3.
自定义作用域bean
4.定制bean特性


1).单多配置文件的使用
1.1)配置文件:beans.xml格式(基本配置)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd"
>
<beans>
    
<bean id="userBean" name="userBean" 
          class
="springtest.UserBean" 
          abstract
="false" 
          singleton
="true" 
          lazy-init
="default"
          autowire
="default" 
          dependency-check
="default" >
            
<property name="name">
                
<value>bea</value>
            
</property>
    
</bean>
    
</beans>

spring 工厂建立单配置和多配置文件
    //单配置文件加载
    public
 void testSp()throws Exception{
        Resource res 
= new FileSystemResource(
            
this.getClass().getClassLoader().getResource("config/beans.xml").getPath()
                );
        BeanFactory fac 
= new XmlBeanFactory(res);
        UserBean uu 
= (UserBean) fac.getBean("userBean");
        System.out.println(uu.getName());
        System.out.println(uu.getAge());
    }
    //多配置文件加载
    public void testSps() throws Exception {
        ApplicationContext act
=new ClassPathXmlApplicationContext(
           
new String[] {"config/beans.xml",.....}
        );
        UserBean uu 
= (UserBean)act.getBean("userBean");
        System.out.println( uu.getName());
    }
1.2) 还用一种是单配置多<import resource="。.xml"/>达到多配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd"
>
<beans>
    
<import resource="beans_2.xml"/>
    
<bean id="userBean" name="userBean" 
          class
="springtest.UserBean" 
          abstract
="false" 
          singleton
="true" 
          lazy-init
="default"
          autowire
="default" 
          dependency-check
="default" >
            
<property name="name">
                
<ref  bean="str1"/>
            
</property>
    
</bean>
</beans>

加载就用上的 -》
单配置文件加载

2).动态替换类方法(cglib)
配置文件中 替换方法(替换方法 getName ) lib中加入 cglib.jar
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd"
>
<beans>
    
<import resource="beans_2.xml"/>
    
<bean id="userBean" name="userBean" 
          class
="springtest.UserBean" 
          abstract
="false" 
          singleton
="true" 
          lazy-init
="default"
          autowire
="default" 
          dependency-check
="default" >
              
<replaced-method name="getName" replacer="rm">
                  
<arg-type>String</arg-type>
              
</replaced-method>

            
<property name="name">
                
<ref  bean="str1"/>
            
</property>
    
</bean>
    
    
<bean id="rm" class="springtest.ReplacedMethod"/>
</beans>

springtest.ReplacedMethod类
package springtest;

import java.lang.reflect.Method;

import org.springframework.beans.factory.support.MethodReplacer;

public class ReplacedMethod implements MethodReplacer {
    
    
public Object reimplement(Object arg0, Method arg1, Object[] arg2) throws Throwable {
        
return "刘凯毅";
    }
}

结果: 不管你怎么setName getName出来的都是-》 “刘凯毅”

3.自定义作用域bean 需要jdk1.5


4.定制bean特性
1)初始化回调 <bean id=".." class=".." init-method="init"/> 方法init()
  和 继承org.springframework.beans.factory.InitializingBean 实现接口方法
    void afterPropertiesSet() throws Exception; 一样
2)

posted @ 2007-12-21 16:33 G_G 阅读(452) | 评论 (0)编辑 收藏

学习了Rmic后 ,联系自己hbm的一些想法。并在实际开发中做到分离持久层.
在次,特留记录。使用不当望大家踊跃拍砖!EJB原理学习_RMIC

效果先上 (你的组员,不需要数据库,不需要hbm,不需要配置文件)
客户端:在服务器开启,并client端内classpath 包含有 *_Stub.class 和 hbmBean等类(底下有ant简化部署) 在内网中随便那台电脑都可以中运行,那台开发电脑可以没有hbm,可以没有数据库
package Client;

import java.rmi.Naming;

import dao.ILiuDao;
import dao.LiuDaoRemote;
import dao.imp.DaoFactory;

public class Client {
    
public static void main(String[] args) {
        
try {
            ILiuDao hello 
= (ILiuDao)Naming.lookup("rmi://192.168.1.109:1099/RMI/LiuDaoRemote");
            System.out.println(hello.getLiu(
"1").getName());
      } 
catch(Exception e) {
            e.printStackTrace();
        }
    }
}

服务器端:
dao需求接口  其他队员提供给管理持久层的队员
package dao;

import java.rmi.Remote;
import java.rmi.RemoteException;

import hibernate.Customer;
import hibernate.Liu;

public interface ILiuDao extends Remote{
    
public abstract Liu getLiu(String id) throws RemoteException;
}

dao实现
package dao;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import org.hibernate.Query;
import org.hibernate.Session;

import hbmConfig.HibernateSessionFactory;
import hibernate.Customer;
import hibernate.Liu;

public class LiuDaoRemote extends UnicastRemoteObject implements ILiuDao {
    
public LiuDaoRemote() throws RemoteException {
        
super();
    }

    
public Liu getLiu(String id)throws RemoteException{
        Liu ll 
=  null ;
        Session session 
= HibernateSessionFactory.currentSession();
        Query qu 
= session.createQuery("from Liu lt where lt.id=:id");
        ll 
= (Liu)qu.setString("id",id).uniqueResult();
        HibernateSessionFactory.closeSession();
        
return ll ;
    }
}

使用ant给客户端提供 jar

    <target name = "rmic">
        
<rmic base="${class}" includes="${rmic.package}/**/*Remote.class"/>
        <!-- 两个jar 包 ,给客户端提供的
             1. rmic带有约定的 到入 *_Stub.class并除dao实现类(*Remote.class
)打包
             2. hbmBean 道入 hbmjava
         -->
        
<jar destfile="${rh.dir}/rmic.jar">
            
<fileset dir="${class}">
              
<include name="${rmic.package}/**/*.class" />
              
<exclude name="${rmic.package}/**/*Remote.class"/>
            
</fileset>
        
</jar>
        
<jar destfile="${rh.dir}/hbmBean.jar" >
            
<fileset dir="${class}">
              
<include name="${hbm.bean.package}/**/*.class" />
            
</fileset>
        
</jar>    
    
</target>


开启服务器:
package test;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

import sun.awt.AppContext;

import dao.DaoFactoryRemote;
import dao.ILiuDao;
import dao.LiuDaoRemote;

import hibernate.Liu;

public class StartMain {
    
    
public static void main(String[] args) throws Exception {
           
try { 
                System.setProperty(
"java.security.policy""rmi.policy");  
                LocateRegistry.createRegistry(
1099);  
                Naming.rebind(
"RMI/LiuDaoRemote"new LiuDaoRemote()); 
            } 
catch(Exception e) {
                e.printStackTrace();
            }
    }

}




posted @ 2007-12-18 17:47 G_G 阅读(1092) | 评论 (0)编辑 收藏

仅列出标题
共16页: First 上一页 4 5 6 7 8 9 10 11 12 下一页 Last