<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>懒虫的家</title>
    <description></description>
    <link>http://lxy19791111.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>extjs grid搜索分页实例[转]</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/188614" style="color:red;">http://lxy19791111.javaeye.com/blog/188614</a>&nbsp;
          发表时间: 2008年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="xml">&lt;script type="text/javascript"&gt;   
Ext.onReady(function(){   
    var ds = new Ext.data.Store({//这是数据源   
        proxy : new Ext.data.HttpProxy({url:'index.php?model=user&amp;action=list&amp;'}),   
        reader: new Ext.data.JsonReader({   
            root: 'topics',   
            totalProperty: 'totalCount',   
            id: 'user_id'  
            },[   
            'user_id','username','real_name','telephone','station_status','headship'  
        ])   
    });   
  
    var colModel = new Ext.grid.ColumnModel([//定义列   
         {header:'ID',width:50,sortable:true,dataIndex:'user_id'},   
         {id:'title',header:'用户名', width:100,sortable:true,dataIndex:'username'},   
         {header:'真实姓名',width:100,sortable:true,dataIndex:'real_name'},   
         {header:'电话',width:100,sortable:true,dataIndex:'telephone'},   
         {header:'岗位状态',width:100,sortable:true,dataIndex:'station_status'},   
         {header:'职务',width:100,sortable:true,dataIndex:'headship'}   
        ]);   
    var tb = new Ext.Toolbar('north-div');//创建一个工具条   
       
    tb.add({   
        text: '添加',   
        handler: newUser   
        },{   
        text: '编辑',   
        handler: editUser   
        },{   
        text: '删除',   
        handler: delUser   
    });   
           
    var grid = new Ext.grid.GridPanel({//列表   
                border:false,   
                region:'south',   
                height:500,   
                loadMask: true,   
                el:'center',   
                title:'条目列表',   
                store: ds,   
                cm: colModel,   
                autoScroll: true,   
                bbar: new Ext.PagingToolbar({   
                    pageSize: 20,   
                    store: ds,   
                    displayInfo: true,   
                    displayMsg: '第{0} 到 {1} 条数据 共{2}条',   
                    emptyMsg: "没有数据"  
                })   
            });   
    var top = new Ext.FormPanel({//这里是搜索表单   
        buttonAlign:'right',   
        labelWidth:70,   
        region:'center',   
        frame:true,   
        title: '搜索',   
        items: [{   
                layout:'column',   
                items:[{   
                    columnWidth:.33,   
                    layout: 'form',   
                    items: [{   
                        xtype:'textfield',   
                        fieldLabel: '用户名',   
                        id: 'username',   
                        name: 'username',   
                        anchor:'90%'  
                    }]   
                },{   
                    columnWidth:.33,   
                    layout: 'form',   
                    items: [{   
                        xtype:'textfield',   
                        fieldLabel: '姓名',   
                        name: 'real_name',   
                        id: 'real_name',   
                        anchor:'90%'  
                    }]   
                },{   
                    columnWidth:.33,   
                    layout: 'form',   
                    items: [{   
                        xtype:'textfield',   
                        fieldLabel: 'Email',   
                        name: 'email',   
                        id: 'email',   
                        vtype:'email',   
                        anchor:'90%'  
                    }]   
                }]   
            }   
        ],   
  
        buttons: [{   
            text: '保存',   
            handler:function(){   
                                // 这里是关键，重新载入数据源，并把搜索表单值提交   
                ds.load({params:{start:0, limit:20,   
                    username:Ext.get('username').dom.value,   
                    real_name:Ext.get('real_name').dom.value,   
                    email:Ext.get('email').dom.value}});   
            }   
        },{   
            text: '重置',   
            handler:function(){top.form.reset();}   
        }]   
    });   
    var viewport = new Ext.Viewport({   
        layout:'border',   
        items:[{   
              border:false,   
              region:'north',   
              contentEl:'north-div',   
              tbar:tb,   
              height:26   
            },top,   
            grid   
        ]}   
    );   
    ds.load({params:{start:0, limit:20}});   
        // 这里很关键，如果不加，翻页后搜索条件就变没了，这里的意思是每次数据载入前先把搜索表单值加上去，这样就做到了翻页保留搜索条件了   
    ds.on('beforeload',function(){   
        Ext.apply(   
        this.baseParams,   
        {   
            username:Ext.get('username').dom.value,   
            real_name:Ext.get('real_name').dom.value,   
            email:Ext.get('email').dom.value   
        });   
    });   
    function newUser() {   
        parent.newTab('400012','添加用户','index.php?model=user&amp;action=add');   
    }   
    function editUser() {   
        var s = grid.getSelectionModel().getSelections();   
        if (s.length==0) {   
            Ext.Msg.alert('出错啦','你还没有选择要操作的记录！');   
        }   
        for (i=0;i&lt;s.length;i++) {   
            var id = s[i].id;   
            parent.newTab('400012'+id,'编辑用户','index.php?model=user&amp;action=add&amp;user_id='+id);   
        }   
    }   
    function delUser() {   
        var ids = getId(grid);   
        if (ids) {   
            Ext.Msg.confirm('确认', '真的要删除吗？', function(btn){   
                if (btn == 'yes'){   
                    Ext.Ajax.request({   
                       url: 'index.php?model=user&amp;action=delete&amp;ids='+ids,   
                       success: function(result){   
                            json = Ext.util.JSON.decode(result.responseText);   
                            ds.reload();   
                            }   
                    });   
                }   
            });        
        } else {   
            Ext.Msg.alert('出错啦','你还没有选择要操作的记录！');   
        }   
    }   
    loadend();   
});   
&lt;/script&gt;   
&lt;div id="north-div"&gt;&lt;/div&gt;   
&lt;div id="center"&gt;&lt;/div&gt;  </pre>
<p>&nbsp;该代码可能不完整，详细请看：<a href="http://www.coderhome.net/zifa/?p=214">http://www.coderhome.net/zifa/?p=214</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/188614#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 May 2008 13:02:45 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/188614</link>
        <guid>http://lxy19791111.javaeye.com/blog/188614</guid>
      </item>
      <item>
        <title>Spring中使用OpenJPA</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/184997" style="color:red;">http://lxy19791111.javaeye.com/blog/184997</a>&nbsp;
          发表时间: 2008年04月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 前面介绍了在《<a href="184113">非容器环境下如何使用OpenJPA</a>》，现在我们来看一下它如何与现在流行的Spring框架集成的问题，包括事务的处理。</p>
<p>&nbsp;&nbsp;1.修改AniamlDAOImpl.java</p>
<pre name="code" class="java">package com.openjpa.dao.impl;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import javax.persistence.Query;

import org.springframework.orm.jpa.JpaCallback;
import org.springframework.orm.jpa.support.JpaDaoSupport;

import com.openjpa.dao.AnimalDAO;
import com.openjpa.entity.Animal;

/**
 * AnimalDAOImpl 演示了如何使用OpenJPA访问数据库的方法和步骤
 * 
 * @author king
 * 
 */
public class AnimalDAOImpl extends JpaDaoSupport implements AnimalDAO {
	
	/**
	 * removeAnimal方法可以从数据库中删除指定编号的Animal对象
	 * 
	 * @param id
	 *            Animal对象的编号
	 */
	public void removeAnimal(final int id) {		

		// 使用Query删除对象
		getJpaTemplate().execute(new JpaCallback(){

			public Object doInJpa(EntityManager em) throws PersistenceException {				
				em.createQuery("delete from Animal animal where animal.id=" + id).executeUpdate();
				return null;
			}			
			
		});
		
	}

	/**
	 * findAnimalsByName 通过输入的name内容模糊查找符合条件的Animal对象列表
	 * 
	 * @param name
	 *            Animal对象的name
	 * @return 符合模糊查找条件的Animal对象列表
	 */
	@SuppressWarnings("unchecked")
	public List&lt;Animal&gt; findAnimalsByName(final String name) {
		
		
		return (List&lt;Animal&gt;) getJpaTemplate().execute(new JpaCallback(){

			public Object doInJpa(EntityManager em) throws PersistenceException {
				/*
				 * 通过EntityManager的createQuery方法获取Query对象
				 * createQuery方法的参数是JPQL查询语句，JPQL语句的语法请参考OpenJPA的帮助文档.
				 * 
				 * 由于查询不需要事务的支持，因此Query操作的前后没有出现begin、commit方法的调用
				 * 
				 */
				Query q = em.createQuery("select animal from Animal animal where animal.name like :name");
				q.setParameter("name", "%" + name + "%");
				
				return q.getResultList();
			}
		});
	}

	/**
	 * getAnimalByPrimaryKey 方法可以查找符合条件的单个Animal对象，如果不存在对应的Animal对象将返回null
	 * 
	 * @param id
	 *            Animal对象的编号
	 * @return 唯一符合条件的Animal对象
	 * 
	 */
	public Animal getAnimalByPrimaryKey(final int id) {
		
		return (Animal) getJpaTemplate().find(Animal.class, id);
	}

	/**
	 * 将对象持久化到数据库中
	 * 
	 * @param animal
	 *            需要被持久化的对象
	 */
	public void persistAnimal(final Animal animal) {
		
		getJpaTemplate().persist(animal);
	}

	public void updateAnimal(final Animal animal) {
		
		getJpaTemplate().merge(animal);
	}

}
</pre>
<p>&nbsp;2.增加AnimalService.java和AnimalServiceImpl.java：</p>
<pre name="code" class="java">package com.openjpa.service;

import java.util.List;

import com.openjpa.entity.Animal;

public interface AnimalService {

	
	/**
	 * removeAnimal方法可以从数据库中删除指定编号的Animal对象
	 * 
	 * @param id
	 *            Animal对象的编号
	 */
	public void removeAnimal(final int id) ;

	/**
	 * findAnimalsByName 通过输入的name内容模糊查找符合条件的Animal对象列表
	 * 
	 * @param name
	 *            Animal对象的name
	 * @return 符合模糊查找条件的Animal对象列表
	 */
	@SuppressWarnings("unchecked")
	public List&lt;Animal&gt; findAnimalsByName(final String name) ;

	/**
	 * getAnimalByPrimaryKey 方法可以查找符合条件的单个Animal对象，如果不存在对应的Animal对象将返回null
	 * 
	 * @param id
	 *            Animal对象的编号
	 * @return 唯一符合条件的Animal对象
	 * 
	 */
	public Animal getAnimalByPrimaryKey(final int id);
	
	/**
	 * 将对象持久化到数据库中
	 * 
	 * @param animal
	 *            需要被持久化的对象
	 */
	public void persistAnimal(final Animal animal);

	public void updateAnimal(final Animal animal);

}
</pre>
<pre name="code" class="java">package com.openjpa.service.impl;

import java.util.List;

import com.openjpa.dao.AnimalDAO;
import com.openjpa.entity.Animal;
import com.openjpa.service.AnimalService;

public class AnimalServiceImpl implements AnimalService {

	private AnimalDAO animalDao;
	
	/**
	 * removeAnimal方法可以从数据库中删除指定编号的Animal对象
	 * 
	 * @param id
	 *            Animal对象的编号
	 */
	public void removeAnimal(final int id){
		
		animalDao.removeAnimal(id);
	}

	/**
	 * findAnimalsByName 通过输入的name内容模糊查找符合条件的Animal对象列表
	 * 
	 * @param name
	 *            Animal对象的name
	 * @return 符合模糊查找条件的Animal对象列表
	 */
	@SuppressWarnings("unchecked")
	public List&lt;Animal&gt; findAnimalsByName(final String name){

		return animalDao.findAnimalsByName(name);
	}

	/**
	 * getAnimalByPrimaryKey 方法可以查找符合条件的单个Animal对象，如果不存在对应的Animal对象将返回null
	 * 
	 * @param id
	 *            Animal对象的编号
	 * @return 唯一符合条件的Animal对象
	 * 
	 */
	public Animal getAnimalByPrimaryKey(final int id){
		
		return animalDao.getAnimalByPrimaryKey(id);
	}
	
	/**
	 * 将对象持久化到数据库中
	 * 
	 * @param animal
	 *            需要被持久化的对象
	 */
	public void persistAnimal(final Animal animal){
		
		animalDao.persistAnimal(animal);
	}

	public void updateAnimal(final Animal animal){
		
		animalDao.updateAnimal(animal);
	}

	public AnimalDAO getAnimalDao() {
		return animalDao;
	}

	public void setAnimalDao(AnimalDAO animalDao) {
		this.animalDao = animalDao;
	}

}
</pre>
<p>&nbsp;3.Spring配置文件：</p>
<pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"&gt;

   &lt;bean id="animalDao" class="com.openjpa.dao.impl.AnimalDAOImpl"&gt;
      &lt;property name="entityManagerFactory" ref="entityManagerFactory"/&gt;
   &lt;/bean&gt;
   
   &lt;bean id="animalService" class="com.openjpa.service.impl.AnimalServiceImpl"&gt;
      &lt;property name="animalDao" ref="animalDao"/&gt;
   &lt;/bean&gt;

   &lt;bean id="entityManagerFactory" 
   	class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt;
      &lt;property name="dataSource" ref="dataSource"/&gt;
      &lt;property name="jpaVendorAdapter"&gt;
         &lt;bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter"&gt;
            &lt;property name="showSql" value="true"/&gt;
            &lt;property name="generateDdl" value="true"/&gt;
            &lt;property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.OracleDictionary"/&gt;
         &lt;/bean&gt;
      &lt;/property&gt;
      &lt;property name="loadTimeWeaver"&gt;
         &lt;bean class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver"/&gt;
      &lt;/property&gt;
   &lt;/bean&gt;

	&lt;bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource"	lazy-init="true"&gt;
		&lt;property name="driverClassName" value="oracle.jdbc.OracleDriver" /&gt;
		&lt;property name="url" value="jdbc:oracle:thin:@localhost:1521:test" /&gt;
		&lt;property name="username" value="test" /&gt;
		&lt;property name="password" value="test" /&gt;
	&lt;/bean&gt;

   &lt;bean id="transactionManager" 
     class="org.springframework.orm.jpa.JpaTransactionManager" lazy-init="true"&gt;
      &lt;property name="entityManagerFactory" ref="entityManagerFactory"/&gt;
   &lt;/bean&gt;
   
   	&lt;tx:advice id="transactionAdvice" transaction-manager="transactionManager"&gt;
		&lt;tx:attributes&gt;
			&lt;tx:method name="get*" read-only="true" /&gt;
			&lt;tx:method name="read*" read-only="true" /&gt;
			&lt;tx:method name="list*" read-only="true" /&gt;
			&lt;tx:method name="find*" read-only="true" /&gt;
			&lt;tx:method name="load*" read-only="true" /&gt;
			&lt;tx:method name="doquery" read-only="true" /&gt;
			&lt;tx:method name="*" /&gt;
		&lt;/tx:attributes&gt;
	&lt;/tx:advice&gt;

	&lt;aop:config&gt;
		&lt;aop:pointcut id="businessService"
			expression="execution(* com.openjpa.service.*.*(..))" /&gt;
		&lt;aop:advisor advice-ref="transactionAdvice"
			pointcut-ref="businessService" /&gt;
	&lt;/aop:config&gt;
	
&lt;/beans&gt;</pre>
<p>&nbsp;4.persistence.xml修改：</p>
<pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="1.0"&gt;
    &lt;persistence-unit name="oracle" transaction-type="RESOURCE_LOCAL"/&gt;
&lt;/persistence&gt;</pre>
<p>&nbsp;5.测试代码TestService.java：</p>
<pre name="code" class="java">package test.openjpa;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.openjpa.entity.Animal;
import com.openjpa.service.AnimalService;

public class TestService {
	
	public static void main(String[] args) {
		
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:spring/applicationContext4App.xml");
		AnimalService animalService = (AnimalService) ctx.getBean("animalService");
		
		//新增
		Animal a = new Animal();
		a.setName("孔雀");
		animalService.persistAnimal(a);
		
		/*
		//查询
		List&lt;Animal&gt; animals = animalService.findAnimalsByName("open");
		for(Animal animal: animals){
			System.out.println("name = " + animal.getName());
		}
		
		//查询单个
		Animal an = animalService.getAnimalByPrimaryKey(a.getId());
		if(an != null){
			System.out.println("Aniaml id = " + a.getId() + " , name = " + an.getName());
		}
		
		
		//删除
		//animalService.removeAnimal(a.getId());
		
		//查询
		animals = animalService.findAnimalsByName("open");
		for(Animal animal: animals){
			System.out.println("name = " + animal.getName());
		}
		*/
	}

}
</pre>
<p>&nbsp;详细见附件源代码。</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/184997#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Apr 2008 15:41:45 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/184997</link>
        <guid>http://lxy19791111.javaeye.com/blog/184997</guid>
      </item>
      <item>
        <title>Spring中使用CXF</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/184616" style="color:red;">http://lxy19791111.javaeye.com/blog/184616</a>&nbsp;
          发表时间: 2008年04月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在Spring中采用CXF来使用WebService是很方便的，这是按照Apache官方网站上的文章写的。 </p>
<p>&nbsp;1.Web服务接口HelloWorld.java： </p>
<pre name="code" class="java">package demo.spring;

import javax.jws.WebService;

@WebService
public interface HelloWorld {
    String sayHi(String text);
}</pre>
<p>&nbsp;2.实现类HelloWorldImpl.java： </p>
<pre name="code" class="java">package demo.spring;

import javax.jws.WebService;

@WebService(endpointInterface = "demo.spring.HelloWorld")
public class HelloWorldImpl implements HelloWorld {

    public String sayHi(String text) {
        return "Hello " + text;
    }
}</pre>
<p>&nbsp;3.Spring配置文件beans.xml： </p>
<pre name="code" class="xml">&lt;beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"&gt;

	&lt;import resource="classpath:META-INF/cxf/cxf.xml" /&gt;
	&lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /&gt;
	&lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml" /&gt;

	&lt;jaxws:endpoint 
	  id="helloWorld" 
	  implementor="demo.spring.HelloWorldImpl" 
	  address="/HelloWorld" /&gt;
	  
&lt;/beans&gt;</pre>
<p>&nbsp;4.在web.xml文件中加入： </p>
<pre name="code" class="xml">&lt;context-param&gt;
	&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
	&lt;param-value&gt;WEB-INF/beans.xml&lt;/param-value&gt;
&lt;/context-param&gt;

&lt;listener&gt;
	&lt;listener-class&gt;
		org.springframework.web.context.ContextLoaderListener
	&lt;/listener-class&gt;
&lt;/listener&gt;

&lt;servlet&gt;
	&lt;servlet-name&gt;CXFServlet&lt;/servlet-name&gt;
	&lt;servlet-class&gt;
		org.apache.cxf.transport.servlet.CXFServlet
	&lt;/servlet-class&gt;
	&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;CXFServlet&lt;/servlet-name&gt;
	&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre>
<p>&nbsp;5.客户端调用时Client.java：</p>
<pre name="code" class="java">package demo.spring.client;

import demo.spring.HelloWorld;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public final class Client {

    private Client() {
    }

    public static void main(String args[]) throws Exception {
        ClassPathXmlApplicationContext context 
            = new ClassPathXmlApplicationContext(new String[] {"demo/spring/client/client-beans.xml"});

        HelloWorld client = (HelloWorld)context.getBean("helloWorld");

        String response = client.sayHi("Joe");
        System.out.println("Response: " + response);
    }
}</pre>
<p>&nbsp; client-beans.xml</p>
<pre name="code" class="xml">&lt;beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"&gt;
	
    &lt;bean id="helloWorld" class="demo.spring.HelloWorld" 
      factory-bean="clientFactory" factory-method="create"/&gt;
    
	&lt;bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"&gt;
	  &lt;property name="serviceClass" value="demo.spring.HelloWorld"/&gt;
	  &lt;property name="address" value="http://localhost:8080/cxf2/HelloWorld"/&gt;
	&lt;/bean&gt;
	  
&lt;/beans&gt;</pre>
<p>&nbsp;源代码详见本文附件。</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/184616#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 20 Apr 2008 18:21:49 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/184616</link>
        <guid>http://lxy19791111.javaeye.com/blog/184616</guid>
      </item>
      <item>
        <title>Spring中使用DWR</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/184137" style="color:red;">http://lxy19791111.javaeye.com/blog/184137</a>&nbsp;
          发表时间: 2008年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp; Spring中如何配置DWR，见下文：</p>
<p>1.增加配置文件：</p>
<pre name="code" class="xml">&lt;beans xmlns ="http://www.springframework.org/schema/beans" 
    xmlns:dwr ="http://www.directwebremoting.org/schema/spring-dwr" 
    xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd" &gt;	
&lt;bean id ="testService" class ="com.test.service.TestService" /&gt;
&lt;bean id ="testAjax" class ="com.test.web.ajax.TestAjax" &gt; 
          &lt;dwr:remote javascript ="GdsAjax" /&gt; 
          &lt;property name ="testService" ref ="testService"/&gt; 
    &lt;/bean&gt;
&lt;/beans&gt;
</pre>
<p>&nbsp;2.web.xml中配置：</p>
<pre name="code" class="xml">&lt;servlet&gt; 
	    &lt;servlet-name&gt;dwr&lt;/servlet-name&gt; 
	    &lt;servlet-class&gt;org.directwebremoting.spring.DwrSpringServlet&lt;/servlet-class&gt; 
	    &lt;init-param&gt; 
	        &lt;param-name&gt;debug&lt;/param-name&gt; 
	        &lt;!—开发时设为true，生产时设为false--&gt;
	        &lt;param-value&gt;true&lt;/param-value&gt;
	    &lt;/init-param&gt; 
	    &lt;init-param&gt;   
            &lt;param-name&gt;crossDomainSessionSecurity&lt;/param-name&gt;   
            &lt;param-value&gt;false&lt;/param-value&gt;   
        &lt;/init-param&gt;
	    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; 
&lt;/servlet&gt; 	
&lt;servlet-mapping&gt; 
	    &lt;servlet-name&gt;dwr&lt;/servlet-name&gt; 
	    &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; 
&lt;/servlet-mapping&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/184137#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Apr 2008 16:02:19 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/184137</link>
        <guid>http://lxy19791111.javaeye.com/blog/184137</guid>
      </item>
      <item>
        <title>Spring中Http Invoker的使用详解</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/184123" style="color:red;">http://lxy19791111.javaeye.com/blog/184123</a>&nbsp;
          发表时间: 2008年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;最近一个项目中数据更改时需要使更改后的数据同步到另一个项目中，最后我们是用Spring的Http Invoker来实现的。</p>
<p>1.Test.java</p>
<pre name="code" class="java">public interface Test {
	
	/**
	 * 自动从数据库同步公共信息或从传入参数同步公共信息
	 * @param commConfigMap
	 * @return
	 */
	public boolean syncCommConfig(Map&lt;String, Integer&gt; commConfigMap);
	
}</pre>
<p>&nbsp; TestImpl.java是Test.java的实现类</p>
<pre name="code" class="java">public class TestImpl implements CacheCommConfigService {

	/**
	 * 自动从数据库同步公共信息或从传入参数同步公共信息
	 * @param commConfigMap
	 * @return
	 */
	public boolean syncCommConfig(Map&lt;String, Integer&gt; commConfigMap) {...}</pre>
<p>&nbsp;2.Spring的配置文件中增加以下内容：</p>
<pre name="code" class="xml"> &lt;bean id="test" 
		class="com.test.util.impl.TestImpl"&gt;
	&lt;/bean&gt;
	&lt;bean id="testService" 
		class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"&gt;
		&lt;property name="service" ref="test"&gt;&lt;/property&gt;
		&lt;property name="serviceInterface"&gt;
			&lt;value&gt;com.test.util.Test&lt;/value&gt;
		&lt;/property&gt;
	&lt;/bean&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 增加一个新的配置文件：</p>
<pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"&gt;


&lt;beans&gt;
	&lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt;
	    &lt;property name="mappings"&gt;
	    	&lt;props&gt;
		    	&lt;prop key="/testSync.service"&gt;testService&lt;/prop&gt;
		    &lt;/props&gt;
	    &lt;/property&gt;
 	&lt;/bean&gt;	 	
&lt;/beans&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 在web.xml文件中增加如下内容：</p>
<pre name="code" class="xml">	&lt;servlet&gt;
		&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;
		&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
		&lt;init-param&gt;
			&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
			&lt;param-value&gt;classpath:spring/dispatcher-servlet.xml&lt;/param-value&gt;
		&lt;/init-param&gt;
		&lt;load-on-startup&gt;101&lt;/load-on-startup&gt;
	&lt;/servlet&gt;
	
	&lt;servlet-mapping&gt;
		&lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt;
		&lt;url-pattern&gt;*.service&lt;/url-pattern&gt;
	&lt;/servlet-mapping&gt;</pre>
<p>&nbsp; 3.另一个系统调用时在Spring的配置文件中加入如下XML：</p>
<pre name="code" class="xml">	&lt;bean id="testSync" 
		class= "org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"&gt;
	    &lt;property name="serviceUrl"&gt;
	    	&lt;value&gt;http://hostName:port/testSync.service&lt;/value&gt;
	    &lt;/property&gt;
	    &lt;property name="serviceInterface"&gt;
	    	&lt;value&gt;com.test.util.Test&lt;/value&gt;
	    &lt;/property&gt;
	&lt;/bean&gt;</pre>
<p>&nbsp;　　调用时，哪个bean需要的话，将"testSync"这个bean注入给它即可。</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/184123#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Apr 2008 15:23:59 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/184123</link>
        <guid>http://lxy19791111.javaeye.com/blog/184123</guid>
      </item>
      <item>
        <title>非容器环境运行OpenJPA应用</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/184113" style="color:red;">http://lxy19791111.javaeye.com/blog/184113</a>&nbsp;
          发表时间: 2008年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>注: 本人是参照网上的相关文章内容写成 </p>
<p>1.不用说,先到<a href="http://openjpa.apache.org">http://openjpa.apache.org</a>下载OpenJPA的相关包. </p>
<p>2.Animal.java</p>
<pre name="code" class="java">package com.openjpa.entity;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;


/**
 * Animal 用于表征系统中的Animal对象，他有两个属性&lt;br&gt;
 * id - 编号，编号将由Oracle数据库自动生成&lt;br&gt;
 * name - Animal的名称
 */
/* Entity注释表示该类是持久化类，的name属性是该实体在查询中对应的唯一名称，默认是类名 */
@Entity
public class Animal {
	// 名称
	@Basic
	private String name;

	// 编号
	/* Id注释表示该字段是标识字段 */
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ_ANIMAL")
	@SequenceGenerator(name="SEQ_ANIMAL", sequenceName="SEQ_ANIMAL")
	private int id;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}	

}
</pre>
<p>&nbsp;AnimalDAO.java</p>
<pre name="code" class="java">package com.openjpa.dao;

import java.util.List;

import com.openjpa.entity.Animal;

/**
 * @author king
 * 
 */
public interface AnimalDAO {
	/**
	 * 增加新的Animal对象
	 * 
	 * @param animal
	 *            新的Animal对象
	 */
	public void persistAnimal(Animal animal);

	/**
	 * 修改Animal对象的信息
	 * 
	 * @param animal
	 *            修改后的Animal对象
	 */
	public void updateAnimal(Animal animal);

	/**
	 * 删除Animal对象
	 * 
	 * @param id
	 *            被删除的Animal对象
	 */
	public void removeAnimal(int id);

	/**
	 * 根据id查找符合条件的Animal
	 * 
	 * @param id
	 *            animal的编号
	 * @return 编号为指定id的Animal对象
	 */
	public Animal getAnimalByPrimaryKey(int id);

	/**
	 * 根据输入的名称字符串模糊查找所有符合条件的Animal对象列表
	 * 
	 * @param name
	 *            Animal对象名称
	 * @return 符合条件的Animal对象列表
	 */
	public List&lt;Animal&gt; findAnimalsByName(String name);

}
</pre>
<p>&nbsp;AnimalDAOImpl.java</p>
<pre name="code" class="java">package com.openjpa.impl.ejb3;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import com.openjpa.dao.AnimalDAO;
import com.openjpa.entity.Animal;

/**
 * AnimalDAOImpl 演示了如何使用OpenJPA访问数据库的方法和步骤
 * 
 * @author king
 * 
 */
public class AnimalDAOImpl implements AnimalDAO {

	
	/**
	 * removeAnimal方法可以从数据库中删除指定编号的Animal对象
	 * 
	 * @param id
	 *            Animal对象的编号
	 */
	public void removeAnimal(int id) {
		// 获取EntityManagerFactory
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("oracle");
		// 获取EntityManager
		EntityManager em = factory.createEntityManager();
		// 开始事务处理
		em.getTransaction().begin();

		// 使用Query删除对象
		em.createQuery("delete from Animal animal where animal.id=" + id)
				.executeUpdate();

		// 我们还可以选择通过对象来完成
		/*
		 * // 从EntityManager中查询到符合条件的对象 Animal animal =
		 * em.find(Animal.class,id); // 调用EntityManager的remove方法删除对象
		 * em.remove(animal);
		 */

		// 提交事务
		em.getTransaction().commit();
		// 关闭EntityManager
		em.close();
		// 关闭EntityManagerFactory
		factory.close();

	}

	/**
	 * findAnimalsByName 通过输入的name内容模糊查找符合条件的Animal对象列表
	 * 
	 * @param name
	 *            Animal对象的name
	 * @return 符合模糊查找条件的Animal对象列表
	 */
	public List&lt;Animal&gt; findAnimalsByName(String name) {
		// 获取EntityManagerFactory
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("oracle");
		// 获取EntityManager
		EntityManager em = factory.createEntityManager();

		/*
		 * 通过EntityManager的createQuery方法获取Query对象
		 * createQuery方法的参数是JPQL查询语句，JPQL语句的语法请参考OpenJPA的帮助文档.
		 * 
		 * 由于查询不需要事务的支持，因此Query操作的前后没有出现begin、commit方法的调用
		 * 
		 */
		 Query q = em.createQuery("select animal from Animal animal where animal.name like :name");
		q.setParameter("name", "%" + name + "%");
		List&lt;Animal&gt; l = q.getResultList();
		// 关闭EntityManager
		em.close();
		// 关闭EntityManagerFactory
		factory.close();

		return l;
	}

	/**
	 * getAnimalByPrimaryKey 方法可以查找符合条件的单个Animal对象，如果不存在对应的Animal对象将返回null
	 * 
	 * @param id
	 *            Animal对象的编号
	 * @return 唯一符合条件的Animal对象
	 * 
	 */
	public Animal getAnimalByPrimaryKey(int id) {
		// 获取EntityManagerFactory
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("oracle");
		// 获取EntityManager
		EntityManager em = factory.createEntityManager();

		// 查找符合条件的对象
		Animal animal = em.find(Animal.class, id);

		// 关闭EntityManager
		em.close();
		// 关闭EntityManagerFactory
		factory.close();

		return animal;
	}

	/**
	 * 将对象持久化到数据库中
	 * 
	 * @param animal
	 *            需要被持久化的对象
	 */
	public void persistAnimal(Animal animal) {
		// 获取EntityManagerFactory
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("oracle");
		// 获取EntityManager
		EntityManager em = factory.createEntityManager();
		// 开始事务处理
		em.getTransaction().begin();

		// 持久化对象
		em.persist(animal);

		// 提交事务
		em.getTransaction().commit();
		// 关闭EntityManager
		em.close();
		// 关闭EntityManagerFactory
		factory.close();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.vivianj.openjpa.AnimalDAO#updateAnimal(org.vivianj.openjpa.entity.Animal)
	 */
	public void updateAnimal(Animal animal) {
		// 获取EntityManagerFactory
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("oracle");
		// 获取EntityManager
		EntityManager em = factory.createEntityManager();
		// 开始事务处理
		em.getTransaction().begin();

		// 持久化对象
		em.merge(animal);

		// 提交事务
		em.getTransaction().commit();
		// 关闭EntityManager
		em.close();
		// 关闭EntityManagerFactory
		factory.close();

	}

}
</pre>
<p>&nbsp;3.persistence.xml</p>
<pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="1.0"&gt;
    &lt;persistence-unit name="oracle" transaction-type="RESOURCE_LOCAL"&gt;
        &lt;provider&gt;
            org.apache.openjpa.persistence.PersistenceProviderImpl
        &lt;/provider&gt;
        
        &lt;class&gt;com.openjpa.entity.Animal&lt;/class&gt;

        &lt;properties&gt;
            &lt;property name="openjpa.ConnectionURL" value="jdbc:oracle:thin:@192.168.1.8:1521:test"/&gt;
            &lt;property name="openjpa.ConnectionDriverName" value="oracle.jdbc.OracleDriver"/&gt;
            &lt;property name="openjpa.ConnectionUserName" value="test"/&gt;
            &lt;property name="openjpa.ConnectionPassword" value="test"/&gt;
            &lt;property name="openjpa.Log" value="SQL=TRACE"/&gt;
        &lt;/properties&gt;
    &lt;/persistence-unit&gt;
&lt;/persistence&gt;</pre>
<p>&nbsp;4.本人使用的是Oracle，Animal表的id为自增序列，开始前我们可在数据库中创建好序列：</p>
<pre name="code" class="sql">create sequence seq_animal
minvalue 1
start with 1
increment by 1;</pre>
<p>&nbsp; 数据库表可以用命令行方式生成:</p>
<pre name="code" class="java">java org.apache.openjpa.jdbc.meta.MappingTool Animal.java</pre>
<p>&nbsp; 5.运行TestAnimalDaoImpl.java测试即可见效果：</p>
<pre name="code" class="java">package test.openjpa;

import java.util.List;

import com.openjpa.entity.Animal;
import com.openjpa.impl.ejb3.AnimalDAOImpl;

public class TestAnimalDaoImpl {
	
	public static void main(String[] args) {
		
		AnimalDAOImpl animalDaoImpl = new AnimalDAOImpl();
		
		//新增
		Animal a = new Animal();
		a.setName("新增openJPA");
		animalDaoImpl.persistAnimal(a);
		
		//查询
		List&lt;Animal&gt; animals = animalDaoImpl.findAnimalsByName("open");
		for(Animal animal: animals){
			System.out.println("name = " + animal.getName());
		}
		
		//查询单个
		Animal an = animalDaoImpl.getAnimalByPrimaryKey(a.getId());
		System.out.println("Aniaml id = " + a.getId() + " , name = " + an.getName());
		
		
		//删除
		animalDaoImpl.removeAnimal(a.getId());
		
		//查询
		animals = animalDaoImpl.findAnimalsByName("open");
		for(Animal animal: animals){
			System.out.println("name = " + animal.getName());
		}
		
	}

}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/184113#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Apr 2008 15:03:59 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/184113</link>
        <guid>http://lxy19791111.javaeye.com/blog/184113</guid>
      </item>
      <item>
        <title>SQLServer和Oracle的常用函数对比</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/167634" style="color:red;">http://lxy19791111.javaeye.com/blog/167634</a>&nbsp;
          发表时间: 2008年03月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          日期：2004-9-28 14:44:02<br />出处：www.knowsky.com <br />作者：www.knowsky.com<br /><br />　　---------数学函数 <br />　　1.绝对值 <br />　　S:select abs(-1) value<br />　　O:select abs(-1) value from dual<br /><br />　　2.取整(大) <br />　　S:select ceiling(-1.001) value <br />　　O:select ceil(-1.001) value from dual<br /><br />　　3.取整（小） <br />　　S:select floor(-1.001) value <br />　　O:select floor(-1.001) value from dual<br /><br />　　4.取整（截取）<br />　　S:select cast(-1.002 as int) value <br />　　O:select trunc(-1.002) value from dual <br /><br />　　5.四舍五入<br />　　S:select round(1.23456,4) value 1.23460<br />　　O:select round(1.23456,4) value from dual 1.2346<br /><br />　　6.e为底的幂 <br />　　S:select Exp(1) value 2.7182818284590451 <br />　　O:select Exp(1) value from dual 2.71828182<br /><br />　　7.取e为底的对数<br />　　S:select log(2.7182818284590451) value 1<br />　　O:select ln(2.7182818284590451) value from dual; 1<br /><br />　　8.取10为底对数<br />　　S:select log10(10) value 1<br />　　O:select log(10,10) value from dual; 1<br /><br />　　9.取平方<br />　　S:select SQUARE(4) value 16<br />　　O:select power(4,2) value from dual 16<br /><br />　　10.取平方根<br />　　S:select SQRT(4) value 2<br />　　O:select SQRT(4) value from dual 2<br /><br />　　11.求任意数为底的幂<br />　　S:select power(3,4) value 81<br />　　O:select power(3,4) value from dual 81<br /><br />　　12.取随机数<br />　　S:select rand() value <br />　　O:select sys.dbms_random.value(0,1) value from dual;<br /><br />　　13.取符号<br />　　S:select sign(-8) value -1<br />　　O:select sign(-8) value from dual -1<br />　　----------数学函数<br /><br />　　14.圆周率<br />　　S:SELECT PI() value 3.1415926535897931<br />　　O:不知道<br /><br />　　15.sin,cos,tan 参数都以弧度为单位<br />　　例如：select sin(PI()/2) value 得到1（SQLServer）<br /><br />　　16.Asin,Acos,Atan,Atan2 返回弧度<br /><br />　　17.弧度角度互换(SQLServer，Oracle不知道)<br />　　DEGREES：弧度-〉角度<br />　　RADIANS：角度-〉弧度<br /><br />　　---------数值间比较<br /><br />　　18. 求集合最大值<br />　　S:select max(value) value from <br />　　(select 1 value<br />　　union<br />　　select -2 value<br />　　union<br />　　select 4 value<br />　　union<br />　　select 3 value)a<br /><br />　　O:select greatest(1,-2,4,3) value from dual<br /><br />　　19. 求集合最小值<br />　　S:select min(value) value from <br />　　(select 1 value<br />　　union<br />　　select -2 value<br />　　union<br />　　select 4 value<br />　　union<br />　　select 3 value)a<br /><br />　　O:select least(1,-2,4,3) value from dual<br /><br />　　20.如何处理null值(F2中的null以10代替)<br />　　S:select F1,IsNull(F2,10) value from Tbl<br />　　O:select F1,nvl(F2,10) value from Tbl<br /><br />　　--------数值间比较<br /><br />　　21.求字符序号<br />　　S:select ascii('a') value<br />　　O:select ascii('a') value from dual<br /><br />　　22.从序号求字符<br />　　S:select char(97) value<br />　　O:select chr(97) value from dual<br /><br />　　23.连接<br />　　S:select '11'+'22'+'33' value<br />　　O:select CONCAT('11','22')||33 value from dual<br /><br />　　23.子串位置 --返回3<br />　　S:select CHARINDEX('s','sdsq',2) value <br />　　O:select INSTR('sdsq','s',2) value from dual<br /><br />　　23.模糊子串的位置 --返回2,参数去掉中间%则返回7<br />　　S:select patindex('%d%q%','sdsfasdqe') value <br />　　O:oracle没发现，但是instr可以通过第四霾问刂瞥鱿执问?BR>　　select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6<br /><br />　　24.求子串<br />　　S:select substring('abcd',2,2) value <br />　　O:select substr('abcd',2,2) value from dual<br /><br />　　25.子串代替 返回aijklmnef<br />　　S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value<br />　　O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual<br /><br />　　26.子串全部替换<br />　　S:没发现<br />　　O:select Translate('fasdbfasegas','fa','我' ) value from dual<br /><br />　　27.长度<br />　　S:len,datalength<br />　　O:length<br /><br />　　28.大小写转换 lower,upper<br /><br />　　29.单词首字母大写<br />　　S:没发现<br />　　O:select INITCAP('abcd dsaf df') value from dual<br /><br />　　30.左补空格（LPAD的第一个参数为空格则同space函数）<br />　　S:select space(10)+'abcd' value<br />　　O:select LPAD('abcd',14) value from dual<br /><br />　　31.右补空格（RPAD的第一个参数为空格则同space函数）<br />　　S:select 'abcd'+space(10) value<br />　　O:select RPAD('abcd',14) value from dual<br /><br />　　32.删除空格<br />　　S:ltrim,rtrim<br />　　O:ltrim,rtrim,trim<br /><br />　　33. 重复字符串<br />　　S:select REPLICATE('abcd',2) value <br />　　O:没发现<br /><br />　　34.发音相似性比较(这两个单词返回值一样，发音相同)<br />　　S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')<br />　　O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual<br />　　SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差<br />　　返回0-4，4为同音，1最高<br /><br />　　--------------日期函数<br /><br />　　35.系统时间<br />　　S:select getdate() value<br />　　O:select sysdate value from dual<br /><br />　　36.前后几日<br />　　直接与整数相加减<br /><br />　　37.求日期<br />　　S:select convert(char(10),getdate(),20) value<br />　　O:select trunc(sysdate) value from dual<br />　　select to_char(sysdate,'yyyy-mm-dd') value from dual<br /><br />　　38.求时间<br />　　S:select convert(char(8),getdate(),108) value<br />　　O:select to_char(sysdate,'hh24:mm:ss') value from dual<br /><br />　　39.取日期时间的其他部分<br />　　S:DATEPART 和 DATENAME 函数 （第一个参数决定） <br />　　O:to_char函数 第二个参数决定<br /><br />　　参数---------------------------------下表需要补充<br />　　year yy, yyyy <br />　　quarter qq, q (季度)<br />　　month mm, m (m O无效)<br />　　dayofyear dy, y (O表星期)<br />　　day dd, d (d O无效)<br />　　week wk, ww (wk O无效)<br />　　weekday dw (O不清楚)<br />　　Hour hh,hh12,hh24 (hh12,hh24 S无效)<br />　　minute mi, n (n O无效)<br />　　second ss, s (s O无效)<br />　　millisecond ms (O无效)<br />　　----------------------------------------------<br /><br />　　40.当月最后一天<br />　　S:不知道<br />　　O:select LAST_DAY(sysdate) value from dual<br /><br />　　41.本星期的某一天（比如星期日）<br />　　S:不知道<br />　　O:SELECT Next_day(sysdate,7) vaule FROM DUAL;<br /><br />　　42.字符串转时间<br />　　S:可以直接转或者select cast('2004-09-08'as datetime) value<br />　　O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;<br /><br />　　43.求两日期某一部分的差（比如秒）<br />　　S:select datediff(ss,getdate(),getdate()+12.3) value<br />　　O:直接用两个日期相减（比如d1-d2=12.3）<br />　　SELECT (d1-d2)*24*60*60 vaule FROM DUAL;<br /><br />　　44.根据差值求新的日期（比如分钟）<br />　　S:select dateadd(mi,8,getdate()) value<br />　　O:SELECT sysdate+8/60/24 vaule FROM DUAL;<br /><br />　　45.求不同时区时间<br />　　S:不知道<br />　　O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;<br /><br />　　-----时区参数,北京在东8区应该是Ydt-------<br />　　AST ADT 大西洋标准时间<br />　　BST BDT 白令海标准时间<br />　　CST CDT 中部标准时间<br />　　EST EDT 东部标准时间<br />　　GMT 格林尼治标准时间<br />　　HST HDT 阿拉斯加—夏威夷标准时间<br />　　MST MDT 山区标准时间<br />　　NST 纽芬兰标准时间<br />　　PST PDT 太平洋标准时间<br />　　YST YDT YUKON标准时间
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/167634#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Mar 2008 11:06:38 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/167634</link>
        <guid>http://lxy19791111.javaeye.com/blog/167634</guid>
      </item>
      <item>
        <title>JQuery学习网站</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/163447" style="color:red;">http://lxy19791111.javaeye.com/blog/163447</a>&nbsp;
          发表时间: 2008年02月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近JQuery很火，学习JQuery的好去处收集中，呵呵...<br />1.jQuery 中文社区官方论坛<br />   http://bbs.jquery.org.cn<br />2.CSSRain网站<br />   http://www.cssrain.cn<br />3.收集中...
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/163447#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Feb 2008 17:51:42 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/163447</link>
        <guid>http://lxy19791111.javaeye.com/blog/163447</guid>
      </item>
      <item>
        <title>UML2.0工具比較</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/162408" style="color:red;">http://lxy19791111.javaeye.com/blog/162408</a>&nbsp;
          发表时间: 2008年02月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="postTitle">[转]<a href="http://www.cnblogs.com/dearjustine/articles/917812.html" class="postTitle2" id="AjaxHolder_ctl01_TitleUrl"><span style="color: #ff3366">UML2.0工具比較</span></a> </div><div class="comText"><h3><a href="http://www.hsdc.com.tw/modules/newbb/viewtopic.php?topic_id=84&amp;forum=4"><span style="color: #ff3366">來源</span></a></h3><h3>前言</h3><p>「工欲善其事，必先利其器」，學習UML沒有好的工具幫忙，往往會讓開發人員半途而廢，尤有甚者，開發人員有時會因為使用了不容易使用的開發工具而誤認為UML是一個非常困難學習的「技術」。殊不知UML只是一種「語言」，就和學習中文、美語一樣，學習UML根本不困難，只要瞭解UML的語法以及知道UML的適用時機，UML自然手到擒來。當然，如果有一套上手的UML開發工具，UML的困難度更是大幅降低，這也是本次專欄我們會討論UML工具評比的原因。</p><p>在這次專欄中，我們將評比三個不同的UML工具 &ndash; IBM公司的 Rational Software Architect(以下簡稱RSA)、Borland公司的 Together Architect(以下簡稱Together)以及Sparx Systems公司的 Enterprise Architect Corporation Edition(以下簡稱EA)。<br />評比的標準會從以下兩個面向來分別評估： </p><ol><li>對UML 2.0的支持； </li><li>文件產生機制。 </li></ol><p>整篇文章中，我們會分成兩大部分，主要針對這三套軟體在上述的兩個面向中的操作進行說明，並且在每一個部分的最後一個小節，都會對三個軟件在該項目中做綜合評比。 <br />不過在開始介紹之前，先就價錢做個評比說明，根據三家公司的產品標準售價，其價格的比較表如下表： </p><table cellspacing="0" border="1" align="center" cellpadding="0"><tbody><tr><td valign="top" width="127"><br />公司 </td><td valign="top" width="324"><p>產品 </p></td><td valign="top" width="107"><p>價格(美金)</p></td></tr><tr><td valign="top" width="127"><p>IBM</p></td><td valign="top" width="324"><p>Rational Software Architect</p></td><td valign="top" width="107"><p>5500</p></td></tr><tr><td valign="top" width="127"><p>Borland</p></td><td valign="top" width="324"><p>Together for Eclipse Architect Edition</p></td><td valign="top" width="107"><p>5000</p></td></tr><tr><td valign="top" width="127"><p>Sparx Systems</p></td><td valign="top" width="324"><p>Enterprise Architect Corporate Edition</p></td><td valign="top" width="107"><p>239</p></td></tr></tbody></table><p align="center">表1：三套軟件的價格表</p><p align="left">對！不要懷疑，這三個產品的價格的差距大約是20倍。先有這樣的一個印象後，我們將針對這三個產品的功能再詳細介紹。</p><h3 align="left">對UML 2.0的支持分析</h3><p align="left">圖1 是OMG所定義的UML十三張圖的分類(參考自<strong>Unified Modeling Language: Superstructure, Version 2, </strong>p. 660)。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_01.jpg" alt="圖1、UML 2.0 規範的 Diagram 分類" /><br /><span style="color: #ff0000">圖1、UML 2.0 規範的 Diagram 分類</span></p><p align="left">以下，我們將針對上述的三個軟件分別說明其對於UML 2.0規範的十三張圖的支援。</p><h4 align="left">1、IBM RSA： </h4><p align="left">IBM的 RSA 與 Borland Together都是建構在 Eclipse 平台上，因此，你必須要先建立一個 UML 2.0 的專案，如此才可以繪製UML的圖形。下圖2就是 RSA 的 UML專案的操作畫面。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_02.jpg" alt="圖2、RSA 的 UML 2.0 專案操作畫面" /><br /><span style="color: #ff0000">圖2、RSA 的 UML 2.0 專案操作畫面</span></p><p>和 Eclipse 的操作相類似，在 RSA 的操作畫面中，左邊是專案區，右邊則是所有可以使用的工具區。</p><p>在 RSA 中可以新增的圖形共有：Class Diagram、Composite Structure Diagram、Component Diagram、Deployment Diagram、Use Case Diagram、Activity Diagram、State Machine Diagram、Sequence Diagram以及Communication Diagram等九張圖。</p><p>比較起 UML 2.0 的規格所制訂的十三張圖，分別少了 Object Diagram、Package Diagram、Interaction Overview Diagram 以及 Timing Diagram 四張圖。<br />不過如果我們詳細觀看 UML 2.0 的規格，我們可以發現，其實 Object Diagram 與 Package Diagram 的基本 Diagram 其實就是 Class Diagram，只是在這兩張圖中，其分別表達了 Package 間的相依關係以及 Object 之間的關係。因此，在 RSA 中，我們可以使用 Class Diagram 來繪製這兩張圖形。</p><p>至於 Interaction Overview Diagram也是類似的狀況，在 UML 2.0 的規格中，其基本的圖形是 Activity Diagram，因此，我們同樣也可以利用 Activity Diagram 來繪製 Interaction Overview Diagram。</p><p>至於時序圖，雖然在 RSA 中的 Communication Diagram 可以表達時序圖中的LifeLine，但是其餘的相關的UML元件都缺乏，因此，RSA並無法完整表達時序圖。</p><p>就以上的說明我們可以瞭解，要在 RSA 中繪製完整的十三張 UML 2.0 規範的圖形，其實有一點困難性，開發人員必須要很清楚地知道這十三張圖各自的主要特性，如此才可以找到適當的圖形來進行繪製。</p><p>至於操作性上，開發人員如果熟悉 Eclipse 的介面的話，使用 RSA 算是還相當簡易，但如果不幸地，開發人員使用的 IDE 工具是 Eclipse 以外的開發工具的話，使用 RSA 算是有些難度在的。</p><p>接著來看細部的操作，在RSA中，開發人員可以輕易地將繪製好的 Sequence Diagram 轉成 Communication Diagram，反之亦然，這算是 RSA 延續過往 Rose 的重要特性，可以說是這套產品最讓人激賞的部分。</p><p>最後談到 MDA(Model-Driven Architecture)的機制，在 RSA 中提供三種轉換機制，分別是 UML-&gt;Java、UML-&gt;C++以及UML-&gt;EJB，由於 RSA 是建置在 Eclipse 上，因此，其轉換為 Java 或 EJB 時，能夠非常順暢地跟 Eclipse 的 Java 或是 J2EE 專案結合，在這個部分，也是 RSA 一向的強項。</p><h4>2、<strong>Borland 的 Together</strong>：</h4><p>跟 RSA 相同，在 Borland Together 中要新增 UML 2.0 的Diagram，也必須要在Eclipse的環境中新增一個 UML 2.0 的專案。下圖3即是 Borland Together 的操作畫面。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_03.jpg" alt="圖3、Borland Together 的操作畫面" /><br /><span style="color: #ff0000">圖3、Borland Together 的操作畫面</span></p><p>跟 RSA 不同，Borland Together 儘可能地讓操作介面與先前的版本類似。針對每一張不同類型的 UML Diagram，其所可以使用的工具都不同，該工具列如上圖右方的「Pallets」繪圖模版。</p><p>另外跟 RSA 類似的，則是在 Borland Together 中，同樣地也只支持 UML 2.0中的九張圖(如上圖左方框起來的部分)，Package Diagram、Object Diagram、Interaction Overview Diagram 以及 Timing Diagram 都不能直接由 Borland Together 中選取。</p><p>如同前面所說，Package Diagram 以及 Object Diagram 都可以使用 Class Diagram 來繪製，相同地，在 Borland Together 中你也可以利用 Class Diagram 來繪製這兩張圖。</p><p>至於 Interaction Overview Diagram 以及 Timing Diagram，則在 Borland Together 中並沒有辦法繪製。</p><p>大體而言，Borland Together 在 UML 2.0 的支持上主要是缺少了上述的兩張圖；再就實際的操作來說，Borland Together 延續了過往 Together 的操作方式，因此，對於Together舊有的用戶來說，不會造成太大的困擾。</p><p>此外，Together 在 Sequence Diagram 與 Communication Diagram 的互轉上，提供一個很有趣的機制，就是你可以根據一張相同的 Interaction Diagram，指定利用「Sequence Diagram」或是「Communication Diagram」來呈現，這是一個非常有趣的想法，更體現了這兩張圖是同一個實作的不同觀點的這個看法。</p><p>至於若要根據 UML 產生 Source Code，則必須要採用不同的專案。如果要產生 Java 的程式碼，必須要選用「Java Modeling」專案，此時，當你在該專案中建立 Class 時，Together都會自動產生一個 Java Class，當該 Class 的屬性或是操作有所變動時，則會立刻反應到程式中。這一點和先前的 TogetherJ 是完全相同的。 </p><p>此外，Together 仍然保有過去 TogetherJ 的重要功能，也就是可以利用 Sequence Diagram 產生 Implement 的程式碼，相同地，也可以由程式碼反轉回 Sequence Diagram。這算是 Together 的一大特點，也是其與其他兩個產品競爭的最大優勢。</p><h4><strong>3、Sparx Systems 的 EA(Enterprise Architect)</strong></h4><p>EA 是這三個軟件中最輕薄短小的。由於採用 Stand-alone 的 AP，因此安裝 EA 時不需要先安裝 JRE 及 Eclipse。</p><p>至於在 EA 中繪製 UML Diagram，則相對簡單的多，由於 EA 本身就是繪製 UML 的工具，因此，你只要在 EA 中新增一個專案，其自然就會把所有 UML Diagram 要繪製的相關環境準備好。下圖4就是 EA 的設計環境。 </p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_04.jpg" alt="圖4、EA 的操作畫面" /><br /><span style="color: #ff0000">圖4、EA 的操作畫面</span></p><p>和 Eclipse 的操作相類似，在 RSA 的操作畫面中，左邊是專案區，右邊則是所有可以使用的工具區。</p><p>EA 的操作介面和前面的兩個軟件有相當大的不同。最主要的原因是前面兩個軟件都是建構在 Eclipse 的基礎下，因此，其基本的操作會受到 Eclipse 的影響；而 EA 本身則是一個獨立的程式，因此，其操作的方式自然可以自行去設計。</p><p>如果開發人員熟悉像 Delphi、Visual Studio 或是 Borland 等IDE開發工具的話，會發現EA的操作環境和這些工具非常類似。在整個開發環境中，右方是工具區，左方則是整個Project相關的各種不同的視界(View)。</p><p>在 EA 中，所有的 UML 圖形將會放置在 Project View 中。和 Togethe r類似的，當你指定到一個特定 Type 的 Diagram 時，左方的 Toolbox 會停留在該 Diagram 對應的 Pallet 上，這在操作上是非常方便的。</p><p>接著看到對 UML 2.0 的支持上。相同地，你可以看到圖4中央框起來的對話框，那就是在 EA 中可以支持的 UML 2.0的Diagram。</p><p>除了 RSA 及 Together 所支持的那九張 Diagram 外，EA 另外也支持剩餘的四張 Diagram；除此之外，EA也另外支持非標準的 Analysis Diagram(Eriksson-Penker Business Extensions，台灣俗稱魚骨圖)。因此，若單從對 UML 2.0 的支持來說，EA算是最完整支持UML 2.0的工具。</p><p>不可避免地，我們也必須要談到 EA 中對於 Sequence Diagram 與 Communication Diagram 的互轉，這方面 EA 並沒有提供任何的功能允許這兩張圖彼此互轉，這算是EA中比較弱的一環。</p><p>接著看到 EA 對於 MDA 的支持。在 EA 中，這個部分做的非常彈性，開發人員可以利用 Script 的語法自行定義自己的 Transformation Rule。在 EA 中則提供 C#、EJB、Java、DDL、XSD 以及 Web Service等標準的轉換機制，讓開發人員可以將同一個 PIM(Platform-Independent Model) 的 Model 轉換為各種不同平台的 PSM(Platform-Speficic Model)。</p><p>至於程式的雙向工程，EA 則支持了包括 C#、VB、VB .NET、Java、C++、Delphi 及 PHP 等各種不同的程式語言。就單一產品而言，在程式語言的支持度上，EA 算是這三個工具之中最多元的 (RSA只支持Java及C++；Together只支持Java)。</p><p>至於和 IDE 工具的整合上，由於 EA 是一套 Stand-alone 的應用程式，因此在對於 IDE 工具的支持上不如 RSA 與 Together。</p><h4 align="left"><strong>對UML 2.0支持的綜合評比：</strong></h4><p>有關這三套軟件在 UML 2.0 的支持上，我們將以下表2 來進行分析。 </p><table cellspacing="0" border="1" align="center" cellpadding="0"><tbody><tr><td valign="top" width="211"><br /><strong>項目</strong><strong> </strong></td><td valign="top" width="115"><p><strong>RSA</strong></p></td><td valign="top" width="115"><p><strong>Together</strong></p></td><td valign="top" width="115"><p><strong>EA</strong></p></td></tr><tr><td valign="top" width="211"><p>對UML 2.0十三張Diagram的支持 </p></td><td valign="top" width="115"><p>不支持Timing Diagram</p></td><td valign="top" width="115"><p>不支持Timing Diagram、Interaction Overview Diagram</p></td><td valign="top" width="115"><p>支持十三張Diagram</p></td></tr><tr><td valign="top" width="211"><p>Sequence Diagram與Communication Diagram的互轉機制 </p></td><td valign="top" width="115"><p>提供 </p></td><td valign="top" width="115"><p>提供 </p></td><td valign="top" width="115"><p>不提供 </p></td></tr><tr><td valign="top" width="211"><p>MDA機制 </p></td><td valign="top" width="115"><p>有 </p></td><td valign="top" width="115"><p>有 </p></td><td valign="top" width="115"><p>有 </p></td></tr><tr><td valign="top" width="211"><p>支持的程式語言 </p></td><td valign="top" width="115"><p>兩種 </p></td><td valign="top" width="115"><p>兩種 </p></td><td valign="top" width="115"><p>九種 </p></td></tr><tr><td valign="top" width="211"><p>Sequence Diagram轉換為程式碼 </p></td><td valign="top" width="115"><p>有 </p></td><td valign="top" width="115"><p>有 </p></td><td valign="top" width="115"><p>沒有 </p></td></tr><tr><td valign="top" width="211"><p>對於IDE介面的整合度 </p></td><td valign="top" width="115"><p>高 </p></td><td valign="top" width="115"><p>高 </p></td><td valign="top" width="115"><p>低 </p></td></tr></tbody></table><div align="center">表2、對 UML 2.0 的支持分析 </div><p align="left">&nbsp;</p><h3 align="left"><strong>文件產生機制(Document Generator) 比較</strong></h3><p>對於開發人員來說，繪製設計圖以及進行程式寫作並非最繁重的工作，因為這是身為一個軟體開發人員勢必要做的事，但是，要將軟體的設計圖以及程式碼製作成開發的文件，往往會造成開發人員的重大困擾。這並不是因為這些文件不重要，或是開發人員不重視，而是因為要在設計工作進行的過程中，隨時去注意文件的格式或是內容，往往會讓設計人員的思緒受到影響。正因為如此，使用一個好的UML工具，幫助開發人員能夠利用工具產生開發文件的功能，才會成為評估UML 工具是否合格的重要評斷標準。那麼，究竟要如何才能夠評估一個UML工具是否有足夠的能力產生開發文件呢？大致可以從以下幾個部分來進行評估：</p><ul><li>文件所能夠支援的格式有多少？ </li><li>是否可以客製化為開發團隊所適用的格式？ </li><li>製作文件所需要花費的Effort有多少？ </li></ul><p>以下我們將針對這幾個部分，分別來探討。</p><h4>1、IBM RSA：</h4><p align="left">RSA 基本上與 Rose 相當類似，其所能夠支持的文件類型相當有限，主要是 PDF 與 HTML，下圖5即是 RSA 產生文件的操作畫面(以產生 PDF 為例)。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_05.jpg" alt="圖5、RSA 產生設計文件的操作畫面" /><br /><span style="color: #ff0000">圖5、RSA 產生設計文件的操作畫面</span></p><p>基本上，RSA 所能夠產生的相關設計文件其實也只有兩種，同時，開發人員也不能夠直接去建立該設計文件的 Template，因此，RSA 在設計文件的支持上是非常薄弱的。</p><p>在 RSA 的前一個版本中，IBM提供另外一個產生開發文件的工具 &ndash; Rational soDa，但是該產品最後發佈的版本是在 RSA Release 之前，因此，該版本是否有支持 RSA 仍在未定之天。不過單就 RSA 而言，其產生開發文件的功能實在是過於陽春，這是不爭的事實。</p><h4 align="left">2、Borland Together： </h4><p align="left">延續上一個版本的特色，Borland Together 在製作開發文件上仍是相當簡便。其主要仍是利用 Template 的方式來產生文件。下圖6即是 Together 產生開發文件的操作畫面。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_06.jpg" alt="圖6、Together 的產生開發文件的操作畫面" /><br /><span style="color: #ff0000">圖6、Together 的產生開發文件的操作畫面</span></p><p align="left">而 Together 在產生文件的機制中，最讓人激賞的是其可以產生的文件格式多達五種，除此之外，其 Template 的設計也非常具備彈性，下圖7即是 Together 製作 Document Template 的製作畫面。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_07.jpg" alt="圖7、Together 的 Document Template 製作畫面" /><br /><span style="color: #ff0000">圖7、Together 的 Document Template 製作畫面</span></p><p align="left">開發團隊除了使用 Together 所提供的 Template 之外，也可以依據團隊的需要自行製作自己的 Template，這在整個文件製作的彈性上，可說是非常完整。當然，針對之前的 Togethe r開發團隊來說，新版的 Togethe r仍然可以使用舊版所設計的 Template，在這一點上，Together 也勝過 RSA 許多。</p><h4 align="left"><strong>3、Sparx Systems的EA：</strong></h4><p align="left">EA所能夠製作的文件型態，主要是 HTML 與 RTF 格式。下圖即是 EA 的 RTF 開發文件的產生畫面。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_08.jpg" alt="圖8、EA 文件製作的操作畫面" /><br /><span style="color: #ff0000">圖8、EA 文件製作的操作畫面</span></p><p align="left">EA 製作文件的方式和 Together 非常類似，也是利用 Template 的方式來產生文件，不過不同的是 Sparx Systems 發揮他們的特色，提供了多種預設的 Template，讓開發人員一方面可以直接使用這些 Template，另一方面也可以透過 Copy Template 的方式來製作自己的 Template，下圖9即是透過 EA 的預設 Template 所製作的某個開發團隊的 Template 的設計畫面。</p><p align="center"><img src="http://www.kenming.idv.tw/mybase/soft_imgs/uml2_tools_compare_09.jpg" alt="圖9、EA 的 Template 製作畫面" /><br /><span style="color: #ff0000">圖9、EA 的 Template 製作畫面</span></p><p>相同地，EA 的最大特色就是簡單。因此，EA 的 Document Template 所採用的設計方式是「WYSWYG」(What You See is What You Get) 的方式，對於開發人員來說，利用這種方式來進行設計，會相對簡單許多。不過與 Togethe r提供多種的 Document Type 相比，EA所提供的 Document Type 就陽春的多。</p><h4><strong>文件製作的綜合評比：</strong> </h4><p>相同地，我們利用前面所說的三個重點來對這三個工具做一個評比，評比的結果如表3。</p><table cellspacing="0" border="1" align="center" cellpadding="0"><tbody><tr><td valign="top" width="211"><p><strong>項目</strong><strong> </strong></p></td><td valign="top" width="115"><p><strong>RSA</strong></p></td><td valign="top" width="115"><p><strong>Together</strong></p></td><td valign="top" width="115"><p><strong>EA</strong></p></td></tr><tr><td valign="top" width="211"><p>文件所能夠支援的格式 </p></td><td valign="top" width="115"><p>PDF、HTML</p></td><td valign="top" width="115"><p>RTF、PDF、HTML、TXT</p></td><td valign="top" width="115"><p>RTF、HTML</p></td></tr><tr><td valign="top" width="211"><p>是否可以客製化為開發團隊所適用的格式 </p></td><td valign="top" width="115"><p>不能 </p></td><td valign="top" width="115"><p>可以 </p></td><td valign="top" width="115"><p>可以 </p></td></tr><tr><td valign="top" width="211"><p>製作文件所需要花費的Effort有多少 </p></td><td valign="top" width="115"><p>簡單，但不能設計自己的文件Template</p></td><td valign="top" width="115"><p>簡單，但設計文件Template較為困難 </p></td><td valign="top" width="115"><p>簡單，設計文件Template難度中等 </p></td></tr></tbody></table><p align="center">表3、對於文件製作的綜合評比 </p><p align="left">&nbsp;</p><h3 align="left">結論：</h3><p>本文的目的主要是希望讀者能夠透過筆者對於這三套軟件實際操作後的心得，瞭解這三套軟件各自的優缺點，並且能夠根據讀者各自的需要，透過成本-效益的分析，選擇一套最適合自己開發團隊的UML工具。</p><p>事實上，除了上述的幾個面向外，讀者在實際選擇UML工具時，仍應該考慮以下幾個不同的面向，包括：專案管理上的難易度、團隊開發平台的支持、需求蒐集的面向以及測試機制的支持&hellip;.等。不過由於篇幅的關係，我們只能夠把此次的主題放在「UML 2.0的支持」以及「文件製作的機制」上。</p></div>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/162408#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Feb 2008 11:08:51 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/162408</link>
        <guid>http://lxy19791111.javaeye.com/blog/162408</guid>
      </item>
      <item>
        <title>自动开启小键盘NumLock</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/162405" style="color:red;">http://lxy19791111.javaeye.com/blog/162405</a>&nbsp;
          发表时间: 2008年02月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          自动开启小键盘NumLock<br />　　问：请问怎样解决启动Windows XP进入登录欢迎界面时，自动开启小键盘NumLock的问题。<br />　　答：首先在BIOS中把NumLock项设为Enable，然后在BIOS中将PnP With OS项亦设为Enable即可。不过注销用户时NumLock小键盘锁是关闭的，要手工打开。<br />    打开注册表编辑器，找到HKEY_USERS\.DEFAULT\Control Panel\Keyboard，将它下面的InitialKeyboardIndicators的键值改为“2”，退出注册表编辑器，重新启动计算机，你就会发现数字小键盘的灯不再熄灭了。<br />    另外，仅需要对config.sys文件动点小手术即可达到此目的。设置方法如下：<br />　　1.单击“开始”菜单中的“运行”命令，然后在“打开”框中键入“sysedit”，按下回车键，打开“系统配置编辑程序”窗口。<br />　　2.单击“Config.sys”标题栏，将它切换为当前编辑窗口，然后在编辑区中键入“NumLock=ON”这一行命令。<br />　　3.保存修改并关闭“系统配置编辑程序”窗口。
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/162405#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Feb 2008 11:01:43 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/162405</link>
        <guid>http://lxy19791111.javaeye.com/blog/162405</guid>
      </item>
      <item>
        <title>Struts2系列</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/146385" style="color:red;">http://lxy19791111.javaeye.com/blog/146385</a>&nbsp;
          发表时间: 2007年12月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          近日在网上的有关Struts2的相关资料,发现这个Blog的内容不错,推荐给大家,http://www.blogjava.net/max/
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/146385#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 06 Dec 2007 13:12:22 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/146385</link>
        <guid>http://lxy19791111.javaeye.com/blog/146385</guid>
      </item>
      <item>
        <title>Struts2环境下如何直接将内容输出到网页(Ajax相关)</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/146263" style="color:red;">http://lxy19791111.javaeye.com/blog/146263</a>&nbsp;
          发表时间: 2007年12月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前我们都用Spring + Struts2，所以不到万不得已是不会用到servlet的，那么有时我们要像之前直接将内容输出到网页怎么办呢？（当前流行的Ajax技术之前很多是基于servlet与服务器交互取得信息的）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实在Struts2中我们可以这样来使用，达到的效果与servlet是一样的，代码如下：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;ajax(){ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter&nbsp;pw&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response&nbsp;=&nbsp;ServletActionContext.getResponse();&nbsp;</span><span class="comment">//取response对象 </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span class="string">&quot;text/xml;charset=utf-8&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span class="string">&quot;Cache-Control&quot;</span><span>,</span><span class="string">&quot;no-cache&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw&nbsp;=&nbsp;response.getWriter(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw.print(</span><span class="string">&quot;<root></root>&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw.print(</span><span class="string">&quot;&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw.print(</span><span class="string">&quot;&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(e.getMessage()); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">finally</span><span>{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(pw&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw.close(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pw&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面代码的部分内无法显示，详细见附图：</p>
<p><img src="http://lxy19791111.javaeye.com/upload/picture/pic/6431/637d1e6f-fe63-417b-9639-7880995246a3.jpg?1196850330" height="457" alt="代码片断" width="668" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种办法还不错吧，也是从javaeye上一位网友的文章中看到的，呵呵!</p>
<a href="http://lxy19791111.javaeye.com/upload/picture/pic/6431/637d1e6f-fe63-417b-9639-7880995246a3-thumb.jpg?1196850330" target="_self"></a>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/146263#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Dec 2007 18:16:27 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/146263</link>
        <guid>http://lxy19791111.javaeye.com/blog/146263</guid>
      </item>
      <item>
        <title>使用 Apache OpenJPA 开发 EJB 3.0 应用系列</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/139774" style="color:red;">http://lxy19791111.javaeye.com/blog/139774</a>&nbsp;
          发表时间: 2007年11月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>使用 Apache OpenJPA 开发 EJB 3.0 应用系列，原文见<font face="Arial"><a href="http://www.ibm.com/developerworks/cn/java/j-lo-openjpa/">http://www.ibm.com/developerworks/cn/java/j-lo-openjpa/</a>。</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/139774#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 Nov 2007 18:16:09 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/139774</link>
        <guid>http://lxy19791111.javaeye.com/blog/139774</guid>
      </item>
      <item>
        <title>通过 WebSphere Application Server V6.1 利用 OpenJPA</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/139773" style="color:red;">http://lxy19791111.javaeye.com/blog/139773</a>&nbsp;
          发表时间: 2007年11月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="COLOR: #999999">&nbsp;</span>通过 WebSphere Application Server V6.1 利用 OpenJPA，原文请见：<font face="Arial"><a href="http://www.ibm.com/developerworks/cn/websphere/techjournal/0612_barcia/0612_barcia.html">http://www.ibm.com/developerworks/cn/websphere/techjournal/0612_barcia/0612_barcia.html</a></font></p>
<p>附件是原文自带的示例。</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/139773#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 Nov 2007 18:06:48 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/139773</link>
        <guid>http://lxy19791111.javaeye.com/blog/139773</guid>
      </item>
      <item>
        <title>Spring中进行采用Quartz任务调度</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/139770" style="color:red;">http://lxy19791111.javaeye.com/blog/139770</a>&nbsp;
          发表时间: 2007年11月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Spring2.0，Quartz 1.6</p>
<h5>1.定义一个Qurtz工作
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;GenHtml&nbsp;</span><span class="keyword">extends</span><span>&nbsp;QuartzJobBean&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@Override</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;executeInternal(JobExecutionContext&nbsp;arg0) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throws</span><span>&nbsp;JobExecutionException&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;test&nbsp;Quartz&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div class="code_title">
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;Quartz&nbsp;配置&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;genHtmlJob&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.scheduling.quartz.JobDetailBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;jobClass&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>tutorial.quartz.GenHtml</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
</h5>
<h5>2.调度一个Cron工作
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;触发器&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;cronGenHtmlTrigger&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.scheduling.quartz.CronTriggerBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;jobDetail&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;genHtmlJob&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;cronExpression&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>0&nbsp;3&nbsp;16&nbsp;*&nbsp;*&nbsp;?</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
</h5>
<h5>3.启动工作
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;触发器调度控制器&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.scheduling.quartz.SchedulerFactoryBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;triggers&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;cronGenHtmlTrigger&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
</h5>
<p>&nbsp;附件是Quartz 的jar包，方便大家下载。</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/139770#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 Nov 2007 17:27:37 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/139770</link>
        <guid>http://lxy19791111.javaeye.com/blog/139770</guid>
      </item>
      <item>
        <title>JBoss IDE 开发EJB3.0 Message Driven Bean [转]</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/138647" style="color:red;">http://lxy19791111.javaeye.com/blog/138647</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="cjk"><font face="宋体">本文转自: <font face="Arial"><a href="http://blog.csdn.net/jxluoix/archive/2007/10/27/1847908.aspx">http://blog.csdn.net/jxluoix/archive/2007/10/27/1847908.aspx</a></font></font><br />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/138647#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 Nov 2007 22:36:15 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/138647</link>
        <guid>http://lxy19791111.javaeye.com/blog/138647</guid>
      </item>
      <item>
        <title>Frontend plus 2.03 </title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/138639" style="color:red;">http://lxy19791111.javaeye.com/blog/138639</a>&nbsp;
          发表时间: 2007年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>class反编译工具,已经破解。</p>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/138639#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 Nov 2007 21:43:00 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/138639</link>
        <guid>http://lxy19791111.javaeye.com/blog/138639</guid>
      </item>
      <item>
        <title>WebSphere上EJB开发与部署</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/138023" style="color:red;">http://lxy19791111.javaeye.com/blog/138023</a>&nbsp;
          发表时间: 2007年11月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>大家可以看看<a href="http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0310_bhogal/bhogal.html" target="_blank">这篇文章</a>，里面对利用WebSphere Studio Application Developer开发EJB有详细的讲解，希望对大家有所帮助。</p>
<p>客户端测试代码片断：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>Properties&nbsp;env&nbsp;=&nbsp;System.getProperties();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="string">&quot;com.sun.jndi.cosnaming.CNCtxFactory&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>env.put(Context.PROVIDER_URL,</span><span class="string">&quot;iiop://soa-share:2809&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>InitialContext&nbsp;ic&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;InitialContext(env);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>String&nbsp;jndiName&nbsp;=&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="string">&quot;nodes/soa-shareNode01/servers/server1/ejb/com/lixy/ejb/SimpleEJBHome&quot;</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>Object&nbsp;ref&nbsp;=&nbsp;ic.lookup(jndiName);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>SimpleEJBHome&nbsp;home&nbsp;=&nbsp;(SimpleEJBHome)javax.rmi.PortableRemoteObject.narrow(ref,SimpleEJBHome.</span><span class="keyword">class</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>SimpleEJB&nbsp;bean&nbsp;=&nbsp;home.create();&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>System.out.println(bean.echoMe(</span><span class="string">&quot;lixy&nbsp;&quot;</span><span>));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/138023#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 Nov 2007 11:45:11 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/138023</link>
        <guid>http://lxy19791111.javaeye.com/blog/138023</guid>
      </item>
      <item>
        <title>JNDI Explorer for Eclipse插件</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/137749" style="color:red;">http://lxy19791111.javaeye.com/blog/137749</a>&nbsp;
          发表时间: 2007年11月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">JNDI Explorer for Eclipse插件，一个很好的查看应用服务器上JNDI资源的eclipse插件!</font>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/137749#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 03 Nov 2007 11:58:54 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/137749</link>
        <guid>http://lxy19791111.javaeye.com/blog/137749</guid>
      </item>
      <item>
        <title>struts2 Action中获取request, response对象的方法</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/135771" style="color:red;">http://lxy19791111.javaeye.com/blog/135771</a>&nbsp;
          发表时间: 2007年10月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span><span>
<div class="code_title">
<p class="alt">struts2 Action中获取request,&nbsp;response对象的方法&nbsp;&nbsp;</p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>ActionContext&nbsp;ctx&nbsp;=&nbsp;ActionContext.getContext();&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;HttpServletRequest&nbsp;request&nbsp;=&nbsp;(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;HttpServletResponse&nbsp;response&nbsp;=&nbsp;(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">//ServletActionContext.APPLICATION;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">//ServletActionContext.SESSION;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">//ServletActionContext.PAGE_CONTEXT;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p class="alt">&nbsp;</p>
</span></span>
          <br/>
          <span style="color:red;">
            <a href="http://lxy19791111.javaeye.com/blog/135771#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 26 Oct 2007 16:30:52 +0800</pubDate>
        <link>http://lxy19791111.javaeye.com/blog/135771</link>
        <guid>http://lxy19791111.javaeye.com/blog/135771</guid>
      </item>
      <item>
        <title>Spring使用p6spy监控sql</title>
        <author>lxy19791111</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lxy19791111.javaeye.com">lxy19791111</a>&nbsp;
          链接：<a href="http://lxy19791111.javaeye.com/blog/131293" style="color:red;">http://lxy19791111.javaeye.com/blog/131293</a>&nbsp;
          发表时间: 2007年10月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1.下载附件的p6psy.jar以及spy.properties文件</p>
<p>2.将p6spy.jar放到应用的lib目录下,将spy.properties放到WEB-INF\classes目录下</p>
<p>3.修改spy.properties样本的第41行，使用ORACLE驱动，封闭缺省的MYSQL驱动： <br />
# oracle driver <br />
realdriver=oracle.jdbc.driver.OracleDriver <br />
修改spy.properties样本的第54行，封闭缺省的MYSQL驱动： <br />
# the mysql open source driver <br />
# realdriver=org.gjt.mm.mysql.Driver <br />
修改spy.properties样本的第168行，将spy.log放到比较好找的位置： <br />
logfile = E:/spy.log </p>
<p>4.驱动程序加载先后的问题解决 <br />
　　如果spy.log里出现 <br />
　　你的程序的数据库驱动名称 is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting 'deregisterdrivers' to true in spy.properties <br />
　　请把spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true，重新运行即可。</p>
<p>5.在spring配置文件中配置如下:</p>
<div class="code_title">
<div class="code_title">
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;P6SPY&nbsp;dataSource&nbsp;target&nbsp;--&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;dataSourceTarget&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;driverClassName&quot;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;oracle.jdbc.OracleDriver&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;url&quot;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;jdbc:oracle:thin:@localhost:1521:testdb&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span cla