??xml version="1.0" encoding="utf-8" standalone="yes"?>一本色道久久88亚洲综合,亚洲色婷婷综合开心网,亚洲精品偷拍视频免费观看http://www.tkk7.com/rendong/zh-cnMon, 12 May 2025 11:25:41 GMTMon, 12 May 2025 11:25:41 GMT60linux 下tomcat6的开动启动脚?/title><link>http://www.tkk7.com/rendong/archive/2010/04/30/319806.html</link><dc:creator>rendong</dc:creator><author>rendong</author><pubDate>Fri, 30 Apr 2010 07:27:00 GMT</pubDate><guid>http://www.tkk7.com/rendong/archive/2010/04/30/319806.html</guid><wfw:comment>http://www.tkk7.com/rendong/comments/319806.html</wfw:comment><comments>http://www.tkk7.com/rendong/archive/2010/04/30/319806.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rendong/comments/commentRss/319806.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rendong/services/trackbacks/319806.html</trackback:ping><description><![CDATA[ http://www.tkk7.com/aoxj/archive/2010/04/10/317953.html <img src ="http://www.tkk7.com/rendong/aggbug/319806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rendong/" target="_blank">rendong</a> 2010-04-30 15:27 <a href="http://www.tkk7.com/rendong/archive/2010/04/30/319806.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP/Servlet/JSF:标签库的深入研究 Q{http://www.tkk7.com/liuwentao253/archive/2006/11/17/81776.htmlQ?/title><link>http://www.tkk7.com/rendong/archive/2006/12/27/90329.html</link><dc:creator>rendong</dc:creator><author>rendong</author><pubDate>Wed, 27 Dec 2006 08:44:00 GMT</pubDate><guid>http://www.tkk7.com/rendong/archive/2006/12/27/90329.html</guid><wfw:comment>http://www.tkk7.com/rendong/comments/90329.html</wfw:comment><comments>http://www.tkk7.com/rendong/archive/2006/12/27/90329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rendong/comments/commentRss/90329.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rendong/services/trackbacks/90329.html</trackback:ping><description><![CDATA[     摘要: q回值                                意义SKIP_BODY                         表示不用处理标签体,直接调用doEndTag()Ҏ。SKIP_PAGE                          忽略标签后面的JSP内容。EVAL_PAGE                         处理标签后,l箋处理JSP后面的内宏V?..  <a href='http://www.tkk7.com/rendong/archive/2006/12/27/90329.html'>阅读全文</a><img src ="http://www.tkk7.com/rendong/aggbug/90329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rendong/" target="_blank">rendong</a> 2006-12-27 16:44 <a href="http://www.tkk7.com/rendong/archive/2006/12/27/90329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 中的悲观锁和乐观锁的实现 (转http://www.tkk7.com/liuwentao253/archive/2006/06/20/53934.html)http://www.tkk7.com/rendong/archive/2006/12/27/90326.htmlrendongrendongWed, 27 Dec 2006 08:40:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/27/90326.htmlhttp://www.tkk7.com/rendong/comments/90326.htmlhttp://www.tkk7.com/rendong/archive/2006/12/27/90326.html#Feedback0http://www.tkk7.com/rendong/comments/commentRss/90326.htmlhttp://www.tkk7.com/rendong/services/trackbacks/90326.html锁(lockingQ?
业务逻辑的实现过E中Q往往需要保证数据访问的排他性。如在金融系l的日终l算 处理中,我们希望针对某个cut-off旉点的数据q行处理Q而不希望在结进行过E中 Q可能是几秒U,也可能是几个时Q,数据再发生变化。此Ӟ我们需要通过一些机制来保证q些数据在某个操作过E中不会被外界修改,q样的机Ӟ在这里,也就是所?的“锁”,?font color="#0000ff">l我们选定的目标数据上锁,使其无法被其他程序修?/strong>?Hibernate支持两种锁机Ӟ即通常所说的“悲观锁QPessimistic LockingQ?和“乐观锁QOptimistic LockingQ”?/p>


一 Q?font color="#0000ff">悲观?/strong>Q?u>Pessimistic LockingQ?
悲观锁,正如其名Q它指的是对数据被外界(包括本系l当前的其他事务Q以及来自外部系l的事务处理Q修Ҏ保守态度Q因此,在整个数据处理过E中Q将数据处于锁定 状态。悲观锁的实玎ͼ往往依靠数据库提供的锁机Ӟ也只有数据库层提供的锁机制才?真正保证数据讉K的排他?/u>Q否则,即在本pȝ中实C加锁机制Q也无法保证外部p?l不会修Ҏ据)?一个典型的倚赖数据库的悲观锁调用: select * from account where name=”Erica?for update q条sql 语句锁定了account 表中所有符合检索条Ӟname=”Erica”)的记录?本次事务提交之前Q事务提交时会释放事务过E中的锁Q,外界无法修改q些记录?Hibernate的悲观锁Q也是基于数据库的锁机制实现?下面的代码实CҎ询记录的加锁Q?/p>

1 String hqlStr  =   " from TUser as user where user.name=’Erica?/span> "
2 Query query  =  session.createQuery(hqlStr); 
3 query.setLockMode( " user " ,LockMode.UPGRADE);  // 加锁 
4 List userList  =  query.list(); // 执行查询Q?/span>

获取数据 query.setLockMode Ҏ询语句中特定别名所对应的记录进行加锁(我们?TUsercL定了一个别名“user”)Q这里也是对返回的所有user记录q行加锁?观察q行期Hibernate生成的SQL语句Q?/p>

1 select tuser0_.id as id, tuser0_.name as name, tuser0_.group_id as group_id, tuser0_.user_type as user_type, tuser0_.sex as sex from t_user tuser0_ where (tuser0_.name = ’Erica’?  for  update

 q里Hibernate通过使用数据库的for update子句实现?font color="#0000ff">悲观?/strong>机制?Hibernate的加锁模式有Q?
? LockMode.NONE Q?无锁机制?
? LockMode.WRITE QHibernate在Insert和Update记录的时候会自动 获取?
? LockMode.READ Q?Hibernate在读取记录的时候会自动获取?

以上q三U锁机制一般由Hibernate内部使用Q如HibernateZ保证Update q程中对象不会被外界修改Q会在saveҎ实现中自动ؓ目标对象加上WRITE锁?br /> 
? LockMode.UPGRADE Q?font color="#0000ff">利用数据库的for update子句加锁?
? LockMode. UPGRADE_NOWAIT QOracle的特定实玎ͼ利用Oracle的for update nowait子句实现加锁?

上面q两U锁机制是我们在应用层较为常用的Q加锁一般通过以下Ҏ实现Q?
Criteria.setLockMode
Query.setLockMode
Session.lock
注意Q只有在查询开始之前(也就是Hiberate 生成SQL 之前Q设定加锁,才会 真正通过数据库的锁机制进行加锁处理,否则Q数据已l通过不包含for update 子句的Select SQL加蝲q来Q所谓数据库加锁也就无从谈v?


?Q乐观锁QOptimistic LockingQ?
相对悲观锁而言Q乐观锁机制采取了更加宽杄加锁机制。悲观锁大多数情况下?靠数据库的锁机制实现Q以保证操作最大程度的独占性。但随之而来的就是数据库 性能的大量开销Q特别是寚w事务而言Q这L开销往往无法承受?如一个金融系l,当某个操作员d用户的数据,q在d的用h据的基础上进 行修ҎQ如更改用户帐户余额Q,如果采用悲观锁机Ӟ也就意味着整个操作q?E中Q从操作员读出数据、开始修改直x交修改结果的全过E,甚至q包括操?员中途去煮咖啡的旉Q,数据库记录始l处于加锁状态,可以惌Q如果面对几 百上千个q发Q这L情况导致怎样的后果?乐观锁机制在一定程度上解决了这个问题?font color="#ff0000">乐观?大多是基于数据版?QVersionQ记录机制实?/strong>。何谓数据版本?即ؓ数据增加一个版本标识,在基?数据库表的版本解x案中Q一般是通过为数据库表增加一个“version”字D| 实现?d出数据时Q将此版本号一同读出,之后更新ӞҎ版本号加一。此Ӟ提 交数据的版本数据与数据库表对应记录的当前版本信息q行比对Q如果提交的数据 版本号大于数据库表当前版本号Q则予以更新Q否则认为是q期数据?对于上面修改用户帐户信息的例子而言Q假?Q?br />
数据库中帐户信息表中有一?version字段Q当前gؓ1Q而当前帐户余额字D(balanceQؓ$100?
1 Q操作员A 此时其dQversion=1Q,q从其帐户余额中扣除$50 Q?100-$50Q?
2 Q 在操作员A操作的过E中Q操作员B也读入此用户信息Qversion=1Q,q?从其帐户余额中扣?20Q?100-$20Q?
3Q?操作员A完成了修改工作,数据版本号加一Qversion=2Q,q同帐户?除后余额Qbalance=$50Q,提交x据库更新Q此时由于提交数据版本大 于数据库记录当前版本Q数据被更新Q数据库记录version更新??
4Q?操作员B完成了操作,也将版本号加一Qversion=2Q试囑֐数据库提交数 据(balance=$80Q,但此时比Ҏ据库记录版本时发玎ͼ操作员B提交?数据版本号ؓ2Q数据库记录当前版本也ؓ2Q不满“提交版本必d于记 录当前版本才能执行更新“的乐观锁策略,因此Q操作员B 的提交被驛_?q样Q就避免了操作员B 用基于version=1 的旧数据修改的结果覆盖操?员A的操作结果的可能?

从上面的例子可以看出Q乐观锁机制避免了长事务中的数据库加锁开销Q操作员A 和操作员B操作q程中,都没有对数据库数据加锁)Q大大提升了大ƈ发量下的p?l整体性能表现?需要注意的是,乐观锁机制往往Zpȝ中的数据存储逻辑Q因此也具备一定的局 限性,如在上例中,׃乐观锁机制是在我们的pȝ中实玎ͼ来自外部pȝ的用?余额更新操作不受我们pȝ的控Ӟ因此可能会造成脏数据被更新到数据库中。在 pȝ设计阶段Q我们应该充分考虑到这些情况出现的可能性,q进行相应调_?乐观锁{略在数据库存储q程中实玎ͼ对外只开攑֟于此存储q程的数据更新?径,而不是将数据库表直接对外公开Q?Hibernate 在其数据讉K引擎中内|了乐观锁实?/strong>。如果不用考虑外部pȝҎ 据库的更新操作,利用Hibernate提供的透明化乐观锁实现Q将大大提升我们?生力?Hibernate中可以通过class描述W的optimistic-lock属性结合version 描述W指定?
现在Q我们ؓ之前CZ中的TUser加上乐观锁机制?br /> 
1Q?首先为TUser的class描述W添加optimistic-lock属性:

< hibernate - mapping >  
< class  
name
= " org.hibernate.sample.TUser "  
table
= " t_user "  
dynamic
- update = " true "  
dynamic
- insert = " true "  
optimistic
- lock = " version "  
>  
……?br />
</ class >  
</ hibernate - mapping >  

optimistic-lock属性有如下可选取|
? none 无乐观锁
? version 通过版本机制实现乐观?
? dirty 通过查发生变动过的属性实C观锁
? all 通过查所有属性实C观锁

其中通过version实现的乐观锁机制是Hibernate官方推荐的乐观锁实现Q同时也 是Hibernate中,目前唯一在数据对象脱Session发生修改的情况下依然有效的锁??/u>。因此,一般情况下Q我们都选择version方式作ؓHibernate乐观锁实现机制?

2Q?d一个Version属性描q符
代码内容

 1 < hibernate - mapping >   
 2 < class   
 3 name = " org.hibernate.sample.TUser "   
 4 table = " t_user "   
 5 dynamic - update = " true "   
 6 dynamic - insert = " true "   
 7 optimistic - lock = " version "   
 8 >   
 9 < id  
10 name = " id "   
11 column = " id "   
12 type = " java.lang.Integer "   
13 >   
14 < generator  class = " native " >   
15 </ generator >   
16 </ id >   
17 < version  
18 column = " version "   
19 name = " version "   
20 type = " java.lang.Integer "   
21 />   
22 …… ?br /> 23 </ class >   
24 </ hibernate - mapping >   
25

注意version 节点必须出现在ID 节点之后?q里我们声明了一个version属性,用于存放用户的版本信息,保存在TUser表的 version字段中?此时如果我们试~写一D代码,更新TUser表中记录数据Q如Q?
代码内容

1 Criteria criteria  =  session.createCriteria(TUser. class );  
2 criteria.add(Expression.eq( " name " , " Erica " ));  
3 List userList  =  criteria.list();  
4 TUser user  = (TUser)userList.get( 0 );  
5 Transaction tx  =  session.beginTransaction();  
6 user.setUserType( 1 );  // 更新UserType字段  
7 tx.commit();  
8

每次对TUserq行更新的时候,我们可以发现Q数据库中的version都在递增?而如果我们尝试在tx.commit 之前Q启动另外一个SessionQ对名ؓErica 的用 戯行操作,以模拟ƈ发更新时的情形:
代码内容

 1 Session session =  getSession();  
 2 Criteria criteria  =  session.createCriteria(TUser. class );  
 3 criteria.add(Expression.eq( " name " , " Erica " ));  
 4 Session session2  =  getSession();  
 5 Criteria criteria2  =  session2.createCriteria(TUser. class );  
 6 criteria2.add(Expression.eq( " name " , " Erica " ));  
 7 List userList  =  criteria.list();  
 8 List userList2  =  criteria2.list();TUser user  = (TUser)userList.get( 0 );  
 9 TUser user2  = (TUser)userList2.get( 0 );  
10 Transaction tx  =  session.beginTransaction();  
11 Transaction tx2  =  session2.beginTransaction();  
12 user2.setUserType( 99 );  
13 tx2.commit();  
14 user.setUserType( 1 );  
15 tx.commit();  
16

执行以上代码Q代码将在tx.commit()处抛?font color="#0000ff">StaleObjectStateException?常,q指出版本检查失败,当前事务正在试图提交一个过期数据。通过捕捉q个异常Q我 们就可以在乐观锁校验p|时进行相应处理?



rendong 2006-12-27 16:40 发表评论
]]>
lucene实例http://www.tkk7.com/rendong/archive/2006/12/25/89849.htmlrendongrendongMon, 25 Dec 2006 03:26:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/25/89849.htmlhttp://www.tkk7.com/rendong/comments/89849.htmlhttp://www.tkk7.com/rendong/archive/2006/12/25/89849.html#Feedback2http://www.tkk7.com/rendong/comments/commentRss/89849.htmlhttp://www.tkk7.com/rendong/services/trackbacks/89849.html说明一?q一文章的用到的lucene,是用2.0版本?主要在查询的时?.0版本的lucene与以前的版本有了一些区?
其实q一些代码都是早几个月写?自己很懒,所以到今天才写到自q博客?高深的文章自己写不了Q只能记录下一些简单的记录与点_其中的代码算是自p乐的Q希望高手不要把重构之类的砸下来...

1、在windowspȝ下的的C盘,Z个名叫s的文件夹,在该文g多w面随便徏三个txt文gQ随便v名啦Q就?1.txt","2.txt"?3.txt"?
其中1.txt的内容如下:

代码
  1. 中华人民共和?  
  2. 全国人民   
  3. 2006 qb?/span>

?2.txt"?3.txt"的内容也可以随便写几写,q里懒写Q就复制一个和1.txt文g的内容一样吧

2、下载lucene包,攑֜classpath路径?
建立索引:

代码
  1. package lighter.javaeye.com;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.File;   
  5. import java.io.FileInputStream;   
  6. import java.io.IOException;   
  7. import java.io.InputStreamReader;   
  8. import java.util.Date;   
  9.   
  10. import org.apache.lucene.analysis.Analyzer;   
  11. import org.apache.lucene.analysis.standard.StandardAnalyzer;   
  12. import org.apache.lucene.document.Document;   
  13. import org.apache.lucene.document.Field;   
  14. import org.apache.lucene.index.IndexWriter;   
  15.   
  16. /**  
  17.  * author lighter date 2006-8-7  
  18.  */  
  19. public class TextFileIndexer {   
  20.     public static void main(String[] args) throws Exception {   
  21.         /* 指明要烦引文件夹的位|?q里是C盘的S文g夹下 */  
  22.         File fileDir = new File("c:\\s");   
  23.   
  24.         /* q里攄引文件的位置 */  
  25.         File indexDir = new File("c:\\index");   
  26.         Analyzer luceneAnalyzer = new StandardAnalyzer();   
  27.         IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer,   
  28.                 true);   
  29.         File[] textFiles = fileDir.listFiles();   
  30.         long startTime = new Date().getTime();   
  31.            
  32.         //增加document到烦引去   
  33.         for (int i = 0; i < textFiles.length; i++) {   
  34.             if (textFiles[i].isFile()   
  35.                     && textFiles[i].getName().endsWith(".txt")) {   
  36.                 System.out.println("File " + textFiles[i].getCanonicalPath()   
  37.                         + "正在被烦?...");   
  38.                 String temp = FileReaderAll(textFiles[i].getCanonicalPath(),   
  39.                         "GBK");   
  40.                 System.out.println(temp);   
  41.                 Document document = new Document();   
  42.                 Field FieldPath = new Field("path", textFiles[i].getPath(),   
  43.                         Field.Store.YES, Field.Index.NO);   
  44.                 Field FieldBody = new Field("body", temp, Field.Store.YES,   
  45.                         Field.Index.TOKENIZED,   
  46.                         Field.TermVector.WITH_POSITIONS_OFFSETS);   
  47.                 document.add(FieldPath);   
  48.                 document.add(FieldBody);   
  49.                 indexWriter.addDocument(document);   
  50.             }   
  51.         }   
  52.         //optimize()Ҏ是对索引q行优化   
  53.         indexWriter.optimize();   
  54.         indexWriter.close();   
  55.            
  56.         //试一下烦引的旉   
  57.         long endTime = new Date().getTime();   
  58.         System.out   
  59.                 .println("q花费了"  
  60.                         + (endTime - startTime)   
  61.                         + " 毫秒来把文档增加到烦引里面去!"  
  62.                         + fileDir.getPath());   
  63.     }   
  64.   
  65.     public static String FileReaderAll(String FileName, String charset)   
  66.             throws IOException {   
  67.         BufferedReader reader = new BufferedReader(new InputStreamReader(   
  68.                 new FileInputStream(FileName), charset));   
  69.         String line = new String();   
  70.         String temp = new String();   
  71.            
  72.         while ((line = reader.readLine()) != null) {   
  73.             temp += line;   
  74.         }   
  75.         reader.close();   
  76.         return temp;   
  77.     }   
  78. }  

索引的结果:

代码
  1. File C:\s\1.txt正在被烦?...   
  2. 中华人民共和国全国h?/span>2006q?  
  3. File C:\s\2.txt正在被烦?...   
  4. 中华人民共和国全国h?/span>2006q?  
  5. File C:\s\3.txt正在被烦?...   
  6. 中华人民共和国全国h?/span>2006q?  
  7. q花费了297 毫秒来把文档增加到烦引里面去!c:\s  

3、徏立了索引之后Q查询啦....

代码
  1. package lighter.javaeye.com;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import org.apache.lucene.analysis.Analyzer;   
  6. import org.apache.lucene.analysis.standard.StandardAnalyzer;   
  7. import org.apache.lucene.queryParser.ParseException;   
  8. import org.apache.lucene.queryParser.QueryParser;   
  9. import org.apache.lucene.search.Hits;   
  10. import org.apache.lucene.search.IndexSearcher;   
  11. import org.apache.lucene.search.Query;   
  12.   
  13. public class TestQuery {   
  14.     public static void main(String[] args) throws IOException, ParseException {   
  15.         Hits hits = null;   
  16.         String queryString = "中华";   
  17.         Query query = null;   
  18.         IndexSearcher searcher = new IndexSearcher("c:\\index");   
  19.   
  20.         Analyzer analyzer = new StandardAnalyzer();   
  21.         try {   
  22.             QueryParser qp = new QueryParser("body", analyzer);   
  23.             query = qp.parse(queryString);   
  24.         } catch (ParseException e) {   
  25.         }   
  26.         if (searcher != null) {   
  27.             hits = searcher.search(query);   
  28.             if (hits.length() > 0) {   
  29.                 System.out.println("扑ֈ:" + hits.length() + " 个结?");   
  30.             }   
  31.         }   
  32.     }   
  33.   
  34. }  

其运行结果:

引用
扑ֈ:3 个结?

具体的API的用法,q里׃说了Q具体的做法参考lucene的官Ҏ档吧...
下一文?
搜烦?lucene的简单实?lt;?gt; http://www.javaeye.com/post/190576
打一个例子吧,
q是lucene2.0的API
代码
  1. QueryParser qp = new QueryParser("body", analyzer);      
  2. query = qp.parse(queryString);      

q是lucene1.4.3版的API

代码
  1. query = QueryParser.parse(key,queryString,new new StandardAnalyzer());  

详细的改动看一些官方的文档清楚啦
文章的时?感觉比较隑ֆ的就是标?有时候不知道起什么名字好,反正q里写的都是关于lucene的一些简单的实例,随便v?

Lucene 其实很简单的,它最主要是做两件事:建立索引和进行搜?
来看一些在lucene中用的术语,q里q不打算作详l的介绍,只是点一下而已----因ؓq一个世界有一U好东西Q叫搜烦?/p>

IndexWriter:lucene中最重要的的cM一Q它主要是用来将文档加入索引Q同时控制烦引过E中的一些参C用?/p>

Analyzer:分析?主要用于分析搜烦引擎遇到的各U文本。常用的有StandardAnalyzer分析?StopAnalyzer分析?WhitespaceAnalyzer分析器等?/p>

Directory:索引存放的位|?lucene提供了两U烦引存攄位置Q一U是盘Q一U是内存。一般情况将索引攑֜盘上;相应地lucene提供了FSDirectory和RAMDirectory两个cR?/p>

Document:文档;Document相当于一个要q行索引的单元,M可以惌被烦引的文g都必{化ؓDocument对象才能q行索引?/p>

FieldQ字Dc?/p>

IndexSearcher:是lucene中最基本的检索工P所有的索都会用到IndexSearcher工具;

Query:查询Qlucene中支持模p查询,语义查询Q短语查询,l合查询{等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery{一些类?/p>

QueryParser: 是一个解析用戯入的工具Q可以通过扫描用户输入的字W串Q生成Query对象?/p>

Hits:在搜索完成之后,需要把搜烦l果q回q显C给用户Q只有这h是完成搜烦的目的。在lucene中,搜烦的结果的集合是用Hitscȝ实例来表C的?/p>

上面作了一大堆名词解释Q下面就看几个简单的实例?
1、简单的的StandardAnalyzer试例子

代码
  1. package lighter.javaeye.com;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.StringReader;   
  5.   
  6. import org.apache.lucene.analysis.Analyzer;   
  7. import org.apache.lucene.analysis.Token;   
  8. import org.apache.lucene.analysis.TokenStream;   
  9. import org.apache.lucene.analysis.standard.StandardAnalyzer;   
  10.   
  11. public class StandardAnalyzerTest    
  12. {   
  13.     //构造函敎ͼ   
  14.     public StandardAnalyzerTest()   
  15.     {   
  16.     }   
  17.     public static void main(String[] args)    
  18.     {   
  19.         //生成一个StandardAnalyzer对象   
  20.         Analyzer aAnalyzer = new StandardAnalyzer();   
  21.         //试字符?  
  22.         StringReader sr = new StringReader("lighter javaeye com is the are on");   
  23.         //生成TokenStream对象   
  24.         TokenStream ts = aAnalyzer.tokenStream("name", sr);    
  25.         try {   
  26.             int i=0;   
  27.             Token t = ts.next();   
  28.             while(t!=null)   
  29.             {   
  30.                 //辅助输出时显C?  
  31.                 i++;   
  32.                 //输出处理后的字符   
  33.                 System.out.println("W?+i+"?"+t.termText());   
  34.                 //取得下一个字W?  
  35.                 t=ts.next();   
  36.             }   
  37.         } catch (IOException e) {   
  38.             e.printStackTrace();   
  39.         }   
  40.     }   
  41. }   

昄l果Q?
引用
W??lighter
W??javaeye
W??com

提示一下:
StandardAnalyzer是lucene中内|的"标准分析?,可以做如下功?
1、对原有句子按照I格q行了分?
2、所有的大写字母都可以能转换为小写的字母
3、可以去掉一些没有用处的单词Q例?is","the","are"{单词,也删除了所有的标点
查看一下结果与"new StringReader("lighter javaeye com is the are on")"作一个比较就清楚明了?
q里不对其APIq行解释了,具体见lucene的官Ҏ档。需要注意一点,q里的代码用的是lucene2的APIQ与1.43版有一些明昄差别?

2、看另一个实?单地建立索引Q进行搜?

代码
  1. package lighter.javaeye.com;   
  2. import org.apache.lucene.analysis.standard.StandardAnalyzer;   
  3. import org.apache.lucene.document.Document;   
  4. import org.apache.lucene.document.Field;   
  5. import org.apache.lucene.index.IndexWriter;   
  6. import org.apache.lucene.queryParser.QueryParser;   
  7. import org.apache.lucene.search.Hits;   
  8. import org.apache.lucene.search.IndexSearcher;   
  9. import org.apache.lucene.search.Query;   
  10. import org.apache.lucene.store.FSDirectory;   
  11.   
  12. public class FSDirectoryTest {   
  13.   
  14.     //建立索引的\?  
  15.     public static final String path = "c:\\index2";   
  16.   
  17.     public static void main(String[] args) throws Exception {   
  18.         Document doc1 = new Document();   
  19.         doc1.add( new Field("name""lighter javaeye com",Field.Store.YES,Field.Index.TOKENIZED));   
  20.   
  21.         Document doc2 = new Document();   
  22.         doc2.add(new Field("name""lighter blog",Field.Store.YES,Field.Index.TOKENIZED));   
  23.   
  24.         IndexWriter writer = new IndexWriter(FSDirectory.getDirectory(path, true), new StandardAnalyzer(), true);   
  25.         writer.setMaxFieldLength(3);   
  26.         writer.addDocument(doc1);   
  27.         writer.setMaxFieldLength(3);   
  28.         writer.addDocument(doc2);   
  29.         writer.close();   
  30.   
  31.         IndexSearcher searcher = new IndexSearcher(path);   
  32.         Hits hits = null;   
  33.         Query query = null;   
  34.         QueryParser qp = new QueryParser("name",new StandardAnalyzer());   
  35.            
  36.         query = qp.parse("lighter");   
  37.         hits = searcher.search(query);   
  38.         System.out.println("查找\"lighter\" ? + hits.length() + "个结?);   
  39.   
  40.         query = qp.parse("javaeye");   
  41.         hits = searcher.search(query);   
  42.         System.out.println("查找\"javaeye\" ? + hits.length() + "个结?);   
  43.   
  44.     }   
  45.   
  46. }  

q行l果Q?
代码
  1. 查找"lighter" ?/span>2个结?  
  2. 查找"javaeye" ?/span>1个结果 ?/span>

很久没有看lucene了,q两三天又复习了一?上一些代码都是前几个月写的,只是改动了一些字W串和包名显C。{载时误明,文章来自:http://lighter.javaeye.com?
如有什么错误的地方Q恳h出,谢谢?br />

wen19851025 写道
//试字符?
StringReader sr = new StringReader("lighter javaeye com");
//生成TokenStream对象
TokenStream ts = aAnalyzer.tokenStream("name", sr);
请问:以上的解析是按什么来解析,Z么他会自动的按空格或?,"q行字符分割,再一个当SR里输入是中文字符?他将会对每个字进行分?请问q是Z?同时q功能的实现又意为着什么呢.....????


StandardAnalyzer是lucene中内|的"标准分析?,可以做如下功?
1、对原有句子按照I格q行了分?
2、所有的大写字母都可以能转换为小写的字母
3、可以去掉一些没有用处的单词Q例?is","the","are"{单词,也删除了所有的标点
同时也可以对中文q行分词(效果不好),现在有很多的中文分词包可以采?



rendong 2006-12-25 11:26 发表评论
]]>
Lucenehttp://www.tkk7.com/rendong/archive/2006/12/25/89846.htmlrendongrendongMon, 25 Dec 2006 03:05:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/25/89846.htmlhttp://www.tkk7.com/rendong/comments/89846.htmlhttp://www.tkk7.com/rendong/archive/2006/12/25/89846.html#Feedback0http://www.tkk7.com/rendong/comments/commentRss/89846.htmlhttp://www.tkk7.com/rendong/services/trackbacks/89846.html阅读全文

rendong 2006-12-25 11:05 发表评论
]]>
tag大全http://www.tkk7.com/rendong/archive/2006/12/24/89775.htmlrendongrendongSun, 24 Dec 2006 12:07:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/24/89775.htmlhttp://www.tkk7.com/rendong/comments/89775.htmlhttp://www.tkk7.com/rendong/archive/2006/12/24/89775.html#Feedback0http://www.tkk7.com/rendong/comments/commentRss/89775.htmlhttp://www.tkk7.com/rendong/services/trackbacks/89775.html昨天Q由于程序中需要用C个WEB TABS样式的页面,GOOGLE之,才发现这东西真不好找?
displaytag q个东西计划要支持TABSQؓ啥只是计划,虽然它的表格样式看v来不错?
webtabs q个嘛,样子太丑了,拿不出手?
prizetags q个可控制的属性太了Q不爽?
Ditchnet JSP Tabs Taglib 是它,Z么没有地方能下蝲刎ͼ哪位好心告诉我?

下面的这个站收录的比较全Q收藏之?
东西q真不少Q慢慢学啦,可惜没有我想要的
【Java开?Jsp标签库?
Posted by E_wsq 2006-3-29 9:32:00
displytag

与Strutsl合使用最出名的一个tag主要是显C格数据很漂亮、完善?
500)this.style.width=500;?border=0> http://displaytag.sourceforge.net/
cewolf tag

用来在web上显C复杂图形报表的一个jsp tag?
500)this.style.width=500;?border=0> http://cewolf.sourceforge.net/
Loading Tab

当一个复杂的操作可以加蝲比较长的旉Ӟ用这个tag?
500)this.style.width=500;?border=0> http://www.mycgiserver.com/~eboudrant/#taglibs
DbForms

DbForms!它是一个基?Java (Servlet,JSP/Taglib)的快速应用程序开发环境,可以帮助开发h员快速徏造基于Web的数据库应用E序?
500)this.style.width=500;?border=0> http://jdbforms.sourceforge.net/
Jakarta Taglibs

Jakarta Taglibs 是ؓJSP定制标签库和相关的项目提供的一个开源仓库,?TagLibraryValidatorc,和对面生成工具的扩展来支持标签库。Jakarta Taglibs 也包括了对JSP Standard Tag Library (JSTL)的参考实现。这个实现基于项目标准。目前,在Jakarta Taglibs 中没有其它标{ֺ代表了Java Community Process (JCP) 标准?
500)this.style.width=500;?border=0> http://jakarta.apache.org/taglibs/index.html
EasyLDAP

LDAP标签库ؓJSPE序员和Web面设计者提供了最Ҏ的方法来执行L的LDAP操作?
500)this.style.width=500;?border=0> http://easyldap.sourceforge.net/
WebJMX
WebJMX标签库项目可以控制你的JMX 接口。WebJMX q个标签库项目的目的是生成一个JSP标签库,可以让有技巧的JSP开发h员ؓJMX生成一个可定制的、规范的、基于Web的界面?
500)this.style.width=500;?border=0> http://webjmx.sourceforge.net/
JPivot
JPivot - 是一个JSP 自定制的标签库,可以l制一个OLAP表格和图表。用户可以执行典型的OLAPDQ如下钻Q切片和方块。它使用Mondrian 作ؓ其OLAP服务器?
500)this.style.width=500;?border=0> http://jpivot.sourceforge.net/
JSP Tree Tag
JSP Tree Tag是一个显C树型结构jsp标签Q它只把需要显C的部分送到客户览器?
500)this.style.width=500;?border=0> http://www.jenkov.dk/projects/treetag/treetag.jsp
Google Tag Library
该标记库?Google 有关。用该标记库,利用 Google Z的网站提供网站查询,q且可以直接在你的网里面显C搜查的l果?
500)this.style.width=500;?border=0> http://google-taglib.sourceforge.net/
TableTag
TableTag是类gDataGrid的Jsp标签库。通过java.util.List填充数据?
500)this.style.width=500;?border=0> http://tabletag.sourceforge.net/
uitags
uitags利用q个开源自定义标签可以很容易开发出一个友好的用户界面?
500)this.style.width=500;?border=0> http://uitags.sourceforge.net/
ValueList
ValueList利用q个标签可以q行数据qoQ排序,分页。而且界面挺漂亮的?
500)this.style.width=500;?border=0> http://valuelist.sourceforge.net/
JCE taglib
JCE taglib把JCEQJava Cryptographic ExtensionsQ包装成TagLibq且包含了EL函数。用这个标{能够ؓjsp应用E序加强安全性?
500)this.style.width=500;?border=0> http://jcetaglib.sourceforge.net/
Prize Tags
Prize Tags是一个集许多功能于一w的Jsp标签库。其中最受欢q的Tree TagQ这个Tag可以Z同节Ҏ定不同的图标Q而且可以服务端可以监控客L节点的展开Q关闭,选中与未选中{事件。除了Tree Tagq有日历Tag,Icon Tag,Alternate Tag ,Template Tag {其它的功能?
500)this.style.width=500;?border=0> http://www.jenkov.com/prizetags/introduction.tmpl
Struts-Layout
Struts-Layout是一个用在Struts的标{ֺ.q个强大的标{ֺ可以用来昄面板(panels),输入?表格,treeviews,sortable lists,datagrids,popups,日历{?使用q些标签可以不用写HTML代码,甚至可以不用懂得HTML.q个目q提供一个Eclipse下的插gKiwi帮助使用Struts和Struts-Layout来开发Jsp面.以下是一张例?
500)this.style.width=500;?border=0>
500)this.style.width=500;?border=0> http://struts.application-servers.com/
JImageTaglib
JImageTaglib是一个用在J2EE Web应用E序的Java标签?它用来在服务端生成与处理囄然后再反馈到JSP面.可以qo(filtering)囄,调整囄文g大小,生成条Ş码等.
500)this.style.width=500;?border=0> http://jimagetaglib.sourceforge.net/
uitags
uitags是一个开源的JSP custom-tag?它让开发友好的用户界面变得?
500)this.style.width=500;?border=0> http://uitags.sourceforge.net/
AJAX Tags
AJAX Tag是一lJsp标签,用来化AJAX(Asynchronous JavaScript and XML )技术在JSP面中的使用.
500)this.style.width=500;?border=0> http://ajaxtags.sourceforge.net/
Struts AjaxTags
q个AjaxTags是在现有的Struts HTML标签库上d对AJAX (Asynchronous Javascript+XML)技术的支持。这样就可以为现有的ZStruts HTML标签库的应用E序dAJAX功能而不用破坏现存的代码q且开发者不需要了解AJAX是怎样工作的?
500)this.style.width=500;?border=0> http://struts.sourceforge.net/ajaxtags/
AWTaglib
AWTaglib是一个Jsp标签可用于创建网?grid)控g.它还提供一些额外的功能可以把网g的数据导ZؓXLS,PDF和CSV(利用JasperReports来实?q能与Struts框架相结?
500)this.style.width=500;?border=0> http://awtaglib.sourceforge.net/
eXtremeTable
eXtremeTable是一个可扩展的用于以表格的Ş式来昄数据的一lJSP标签?


rendong 2006-12-24 20:07 发表评论
]]>
[转]用AcegiZ的Spring应用加把?/title><link>http://www.tkk7.com/rendong/archive/2006/12/24/89774.html</link><dc:creator>rendong</dc:creator><author>rendong</author><pubDate>Sun, 24 Dec 2006 12:05:00 GMT</pubDate><guid>http://www.tkk7.com/rendong/archive/2006/12/24/89774.html</guid><wfw:comment>http://www.tkk7.com/rendong/comments/89774.html</wfw:comment><comments>http://www.tkk7.com/rendong/archive/2006/12/24/89774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rendong/comments/commentRss/89774.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rendong/services/trackbacks/89774.html</trackback:ping><description><![CDATA[ <blockquote> <p>关键?J2EE Spring Acegi</p> <h3>[介]</h3> <p>对于一个典型的Web应用Q完善的认证和授权机制是必不可少的,在SpringFramework中,Juergen Hoeller提供的范例JPetStorel了一些这斚w的介l,但还q远不够QAcegi是一个专门ؓSpringFramework提供安全机制?目Q全UCؓAcegi Security System for SpringQ当前版本ؓ0.5.1Q就其目前提供的功能Q应该可以满绝大多数应用的需求?/p> <p>本文的主要目的是希望能够说明如何在基于Spring构架的Web应用中用AcegiQ而不是详l介l其中的每个接口、每个类。注意,即对已l存在的Spring应用Q通过下面介绍的步骤,也可以马上n受到Acegi提供的认证和授权?/p> <p>[基础工作] <br />在你的Web应用的lib中添加Acegi下蝲包中的acegi-security.jar</p> <p>[web.xml] <br />实现认证和授权的最常用的方法是通过filterQAcegi亦是如此Q通常Acegi需要在web.xmld以下5个filter:</p> <p><filter> <br /><filter-name>Acegi Channel Processing Filter</filter-name> <br /><filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class> <br /><init-param> <br /><param-name>targetClass</param-name> <br /><param-value>net.sf.acegisecurity.securechannel.ChannelProcessingFilter</param-value> <br /></init-param> <br /></filter> <br /><filter> <br /><filter-name>Acegi Authentication Processing Filter</filter-name> <br /><filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class> <br /><init-param> <br /><param-name>targetClass</param-name> <br /><param-value>net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter</param-value> <br /></init-param> <br /></filter> <br /><filter> <br /><filter-name>Acegi HTTP BASIC Authorization Filter</filter-name> <br /><filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class> <br /><init-param> <br /><param-name>targetClass</param-name> <br /><param-value>net.sf.acegisecurity.ui.basicauth.BasicProcessingFilter</param-value> <br /></init-param> <br /></filter> <br /><filter> <br /><filter-name>Acegi Security System for Spring Auto Integration Filter</filter-name> <br /><filter-class>net.sf.acegisecurity.ui.AutoIntegrationFilter</filter-class> <br /></filter> <br /><filter> <br /><filter-name>Acegi HTTP Request Security Filter</filter-name> <br /><filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class> <br /><init-param> <br /><param-name>targetClass</param-name> <br /><param-value>net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter</param-value> <br /></init-param> <br /></filter></p> <p>最先引赯惑的是net.sf.acegisecurity.util.FilterToBeanProxyQAcegi自己的文档上解释是: “What FilterToBeanProxy does is delegate the Filter’s methods through to a bean which is obtained from the <br />Spring application context. This enables the bean to benefit from the Spring application context lifecycle support and configuration flexibility.”,如希望深I的话,ȝ看源代码应该不难理解?/p> <p>再下来就是添加filter-mapping了: <br /><filter-mapping> <br /><filter-name>Acegi Channel Processing Filter</filter-name> <br /><url-pattern>/*</url-pattern> <br /></filter-mapping> <br /><filter-mapping> <br /><filter-name>Acegi Authentication Processing Filter</filter-name> <br /><url-pattern>/*</url-pattern> <br /></filter-mapping> <br /><filter-mapping> <br /><filter-name>Acegi HTTP BASIC Authorization Filter</filter-name> <br /><url-pattern>/*</url-pattern> <br /></filter-mapping> <br /><filter-mapping> <br /><filter-name>Acegi Security System for Spring Auto Integration Filter</filter-name> <br /><url-pattern>/*</url-pattern> <br /></filter-mapping> <br /><filter-mapping> <br /><filter-name>Acegi HTTP Request Security Filter</filter-name> <br /><url-pattern>/*</url-pattern> <br /></filter-mapping></p> <p>q里Q需要注意以下两点: <br />1) q几个filter的顺序是不能更改的,序不对无法正常工作; <br />2) 如果你的应用不需要安全传输,如httpsQ则”Acegi Channel Processing Filter”相兛_Ҏ释掉卛_Q?<br />3) 如果你的应用不需要Spring提供的远E访问机Ӟ如Hessian and BurlapQ将”Acegi HTTP BASIC Authorization <br />Filter”相兛_Ҏ释掉卛_?/p> <p>[applicationContext.xml] <br />接下来就是要dapplicationContext.xml中的内容了,从刚才FilterToBeanFactory的解释可以看出,真正的filter?<br />在Spring的applicationContext中管理:</p> <p>1) 首先Q你的数据库中必d有保存用户名和密码的tableQAcegi要求table的schema必须如下Q?/p> <p>CREATE TABLE users ( <br />username VARCHAR(50) NOT NULL PRIMARY KEY, <br />password VARCHAR(50) NOT NULL, <br />enabled BIT NOT NULL <br />); <br />CREATE TABLE authorities ( <br />username VARCHAR(50) NOT NULL, <br />authority VARCHAR(50) NOT NULL <br />); <br />CREATE UNIQUE INDEX ix_auth_username ON authorities ( username, authority ); <br />ALTER TABLE authorities ADD CONSTRAINT fk_authorities_users foreign key (username) REFERENCES users <br />(username);</p> <p>2) d讉K你的数据库的datasource和Acegi的jdbcDaoQ如下:</p> <p><bean id=”dataSource?class=”org.springframework.jdbc.datasource.DriverManagerDataSource?gt; <br /><property name=”driverClassName?gt;<value>${jdbc.driverClassName}</value></property> <br /><property name=”url?gt;<value>${jdbc.url}</value></property> <br /><property name=”username?gt;<value>${jdbc.username}</value></property> <br /><property name=”password?gt;<value>${jdbc.password}</value></property> <br /></bean> <br /><bean id=”jdbcDaoImpl?class=”net.sf.acegisecurity.providers.dao.jdbc.JdbcDaoImpl?gt; <br /><property name=”dataSource?gt;<ref bean=”dataSource?></property> <br /></bean></p> <p>3) dDaoAuthenticationProvider:</p> <p><bean id=”daoAuthenticationProvider?class=”net.sf.acegisecurity.providers.dao.DaoAuthenticationProvider?gt; <br /><property name=”authenticationDao?gt;<ref bean=”authenticationDao?></property> <br /><property name=”userCache?gt;<ref bean=”userCache?></property> <br /></bean></p> <p><bean id=”userCache?class=”net.sf.acegisecurity.providers.dao.cache.EhCacheBasedUserCache?gt; <br /><property name=”minutesToIdle?gt;<value>5</value></property> <br /></bean></p> <p>如果你需要对密码加密Q则在daoAuthenticationProvider中加入:<property name=”passwordEncoder?gt;<ref <br />bean=”passwordEncoder?></property>QAcegi提供了几U加密方法,详细情况可看?<br />net.sf.acegisecurity.providers.encoding</p> <p>4) dauthenticationManager:</p> <p><bean id=”authenticationManager?class=”net.sf.acegisecurity.providers.ProviderManager?gt; <br /><property name=”providers?gt; <br /><list> <br /><ref bean=”daoAuthenticationProvider?> <br /></list> <br /></property> <br /></bean></p> <p>5) daccessDecisionManager:</p> <p><bean id=”accessDecisionManager?class=”net.sf.acegisecurity.vote.AffirmativeBased?gt; <br /><property name=”allowIfAllAbstainDecisions?gt; <br /><value>false</value> <br /></property> <br /><property name=”decisionVoters?gt; <br /><list><ref bean=”roleVoter?></list> <br /></property> <br /></bean> <br /><bean id=”roleVoter?class=”net.sf.acegisecurity.vote.RoleVoter?></p> <p>6) dauthenticationProcessingFilterEntryPoint:</p> <p><bean id=”authenticationProcessingFilterEntryPoint?<br />class=”net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint?gt; <br /><property name=”loginFormUrl?gt;<value>/acegilogin.jsp</value></property> <br /><property name=”forceHttps?gt;<value>false</value></property> <br /></bean></p> <p>其中acegilogin.jsp是登陆页面,一个最单的d面如下Q?/p> <p><%@ taglib prefix=’c?uri=’http://java.sun.com/jstl/core?%> <br /><%@ page import=”net.sf.acegisecurity.ui.AbstractProcessingFilter?%> <br /><%@ page import=”net.sf.acegisecurity.AuthenticationException?%> <br /><html> <br /><head> <br /><title>Login</title> <br /></head></p> <p><body> <br /><h1>Login</h1> <br /><form action=?lt;c:url value=’j_acegi_security_check?>?method=”POST?gt; <br /><table> <br /><tr><td>User:</td><td><input type=’text?name=’j_username?gt;</td></tr> <br /><tr><td>Password:</td><td><input type=’password?name=’j_password?gt;</td></tr> <br /><tr><td colspan=??gt;<input name=”submit?type=”submit?gt;</td></tr> <br /><tr><td colspan=??gt;<input name=”reset?type=”reset?gt;</td></tr> <br /></table> <br /></form> <br /></body> <br /></html></p> <p>7) dfilterInvocationInterceptor:</p> <p><bean id=”filterInvocationInterceptor?<br />class=”net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor?gt; <br /><property name=”authenticationManager?gt; <br /><ref bean=”authenticationManager?> <br /></property> <br /><property name=”accessDecisionManager?gt; <br /><ref bean=”accessDecisionManager?> <br /></property> <br /><property name=”objectDefinitionSource?gt; <br /><value> <br />CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON <br />\A/sec/administrator.*\Z=ROLE_SUPERVISOR <br />\A/sec/user.*\Z=ROLE_TELLER <br /></value> <br /></property> <br /></bean></p> <p>q里h意,要objectDefinitionSource中定义哪些页面需要权限访问,需要根据自q应用需求进行修改,我上面给?<br />的定义的意思是q样的: <br />a. CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON意思是在比较请求\径时全部转换为小?<br />b. \A/sec/administrator.*\Z=ROLE_SUPERVISOR意思是只有权限为ROLE_SUPERVISOR才能讉K/sec/administrator*的页?<br />c. \A/sec/user.*\Z=ROLE_TELLER意思是只有权限为ROLE_TELLER的用h能访?sec/user*的页?/p> <p>8) dsecurityEnforcementFilter:</p> <p><bean id=”securityEnforcementFilter?class=”net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter?gt; <br /><property name=”filterSecurityInterceptor?gt; <br /><ref bean=”filterInvocationInterceptor?> <br /></property> <br /><property name=”authenticationEntryPoint?gt; <br /><ref bean=”authenticationProcessingFilterEntryPoint?> <br /></property> <br /></bean></p> <p>9) dauthenticationProcessingFilter:</p> <p><bean id=”authenticationProcessingFilter?<br />class=”net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter?gt; <br /><property name=”authenticationManager?gt; <br /><ref bean=”authenticationManager?> <br /></property> <br /><property name=”authenticationFailureUrl?gt; <br /><value>/loginerror.jsp</value> <br /></property> <br /><property name=”defaultTargetUrl?gt; <br /><value>/</value> <br /></property> <br /><property name=”filterProcessesUrl?gt; <br /><value>/j_acegi_security_check</value> <br /></property> <br /></bean> <br />其中authenticationFailureUrl是认证失败的面?/p> <p>10) 如果需要一些页面通过安全通道的话Q添加下面的配置:</p> <p><bean id=”channelProcessingFilter?class=”net.sf.acegisecurity.securechannel.ChannelProcessingFilter?gt; <br /><property name=”channelDecisionManager?gt; <br /><ref bean=”channelDecisionManager?> <br /></property> <br /><property name=”filterInvocationDefinitionSource?gt; <br /><value> <br />CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON <br />\A/sec/administrator.*\Z=REQUIRES_SECURE_CHANNEL <br />\A/acegilogin.jsp.*\Z=REQUIRES_SECURE_CHANNEL <br />\A/j_acegi_security_check.*\Z=REQUIRES_SECURE_CHANNEL <br />\A.*\Z=REQUIRES_INSECURE_CHANNEL <br /></value> <br /></property> <br /></bean></p> <p><bean id=”channelDecisionManager?class=”net.sf.acegisecurity.securechannel.ChannelDecisionManagerImpl?gt; <br /><property name=”channelProcessors?gt; <br /><list> <br /><ref bean=”secureChannelProcessor?> <br /><ref bean=”insecureChannelProcessor?> <br /></list> <br /></property> <br /></bean> <br /><bean id=”secureChannelProcessor?class=”net.sf.acegisecurity.securechannel.SecureChannelProcessor?> <br /><bean id=”insecureChannelProcessor?class=”net.sf.acegisecurity.securechannel.InsecureChannelProcessor?></p> <p>[~少了什么?] <br />Acegi目前提供了两U”secure object”,分别寚w面和Ҏq行安全认证理Q我q里介绍的只是利?<br />FilterSecurityInterceptor对访问页面的权限控制Q除此之外,Acegiq提供了另外一个Interceptor?<br />MethodSecurityInterceptorQ它l合runAsManager可实现对对象中的Ҏ的权限控Ӟ使用Ҏ可参看Acegi自带的文?<br />和contact范例?/p> <p>[最后要说的] <br />本来以ؓ只是说明如何使用Acegi而已Q应该非常简单,但真正写h才发现想要条理清楚的理顺所有需要的beanq是?<br />困难的,但愿我没有遗漏太多东西,如果我的文章有什么遗漏或错误的话Q还请参看Acegi自带的quick-start范例Q但?<br />注意Q这个范例是不能直接拿来用的?/p> <p>原文在这里:</p> <p>Trackback: <a >http://tb.blog.csdn.net/TrackBack.aspx?PostId=54881</a></p> </blockquote> <img src ="http://www.tkk7.com/rendong/aggbug/89774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rendong/" target="_blank">rendong</a> 2006-12-24 20:05 <a href="http://www.tkk7.com/rendong/archive/2006/12/24/89774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 文档http://www.tkk7.com/rendong/archive/2006/12/02/85075.htmlrendongrendongSat, 02 Dec 2006 12:03:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/02/85075.htmlhttp://www.tkk7.com/rendong/comments/85075.htmlhttp://www.tkk7.com/rendong/archive/2006/12/02/85075.html#Feedback0http://www.tkk7.com/rendong/comments/commentRss/85075.htmlhttp://www.tkk7.com/rendong/services/trackbacks/85075.htmlhttp://www.hibernate.org/hib_docs/v3/reference/en/pdf/hibernate_reference.pdf

rendong 2006-12-02 20:03 发表评论
]]>
c3p0http://www.tkk7.com/rendong/archive/2006/12/02/85058.htmlrendongrendongSat, 02 Dec 2006 09:32:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/02/85058.htmlhttp://www.tkk7.com/rendong/comments/85058.htmlhttp://www.tkk7.com/rendong/archive/2006/12/02/85058.html#Feedback0http://www.tkk7.com/rendong/comments/commentRss/85058.htmlhttp://www.tkk7.com/rendong/services/trackbacks/85058.html<session-factory>

<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="show_sql">true</property>
<property name="current_session_context_class">thread</property>
<!--Fetch Size 是设定JDBC的Statementd数据的时候每ơ从数据库中取出的记录条?->
<property name="jdbc.fetch_size">20</property>
<!--Batch Size是设定对数据库进行批量删除,扚w更新和批量插入的时候的Ҏ大小Q有点相当于讄Buffer~冲区大的意?->
<property name="jdbc.batch_size ">20</property>
<property name="connection.username">HNMC</property>
<property name="connection.password">sundy</property>
<property name="connection.url">jdbc:oracle:thin:@192.168.0.20:1521:ora9</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<!--  在这U情况下Q没问题?-->
<property name="c3p0.timeout">60</property>
<property name="c3p0.idle_test_period">600</property>


<!--    

<!--<property name="c3p0.idle_test_period">120</property>-->
如改以下俩|或他们差距很大:

<property name="c3p0.timeout">600</property>

<!--<property name="c3p0.idle_test_period">60</property>-->

当我启动tomcatQ运行程序后Q空?00后出C列异?但程序还照常q行

-->

<!-- 

Hibernate里可以设|的属性不多:
#c3p0-native property name hibernate configuration key
#c3p0.acquireIncrement hibernate.c3p0.acquire_increment
#c3p0.idleConnectionTestPeriod hibernate.c3p0.idle_test_period
#c3p0.initialPoolSize not available -- uses minimum size
#c3p0.maxIdleTime hibernate.c3p0.timeout
#c3p0.maxPoolSize hibernate.c3p0.max_size
#c3p0.maxStatements hibernate.c3p0.max_statements
#c3p0.minPoolSize hibernate.c3p0.min_size
#c3p0.testConnectionsOnCheckout hibernate.c3p0.validate hibernate 2.x only!

另外的属性你需要配|c3p0.properties
比如Q?
c3p0.acquireRetryDelay=111
c3p0.acquireRetryAttempts=22
c3p0.breakAfterAcquireFailure=true

-->



<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">2</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>

<!-- ?lt;property name="hibernate.c3p0.validate">false</property>实在hibernate中不可设| ?->
<property name="hibernate.c3p0.validate">false</property>


<!--C3P0 setting-->

<property name="c3p0.max_size">20</property>
<property name="c3p0.min_size">5</property>
<!--获取q接的等待时?->
<property name="c3p0.timeout">3600</property>
<property name="c3p0.max_statements">100</property>
<!--每隔3600毫秒试q接是否可以正常使用-->
<property name="c3p0.idle_test_period">3600</property>
<property name="c3p0.acquire_increment">2</property>

<mapping resource="com/sundy/hnmc/beans/AccountBean.hbm.xml"/>
</session-factory>
</hibernate-configuration>



另一个设|?br /> <!-- 数据源配|?/span>-->
    
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
      
<property name="driverClass">
        
<value>org.gjt.mm.mysql.Driver</value>
      
</property>
      
<property name="jdbcUrl">
        
<value>jdbc:mysql://localhost/tycho?useUnicode=true&amp;characterEncoding=utf-8</value>
      
</property>
      
<property name="properties">
        
<props>
            
<prop key="hibernate.hbm2ddl.auto">update</prop> 
            
<prop key="c3p0.minPoolSize">1</prop> 
            
<prop key="hc3p0.maxPoolSize">10</prop> 
            
<prop key="hc3p0.timeout">60</prop> 
            
<prop key="c3p0.max_statement">50</prop> 
            
<prop key="c3p0.testConnectionOnCheckout">true</prop> 
            
<prop key="hibernate.c3p0.testConnectionOnCheckout">false</prop>
            
<prop key="user">root</prop> 
            
<prop key="password">root</prop>
        
</props>
      
</property>
    
</bean>



<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.acquire_increment">2</property>


 

 

 

 



rendong 2006-12-02 17:32 发表评论
]]>
apache负蝲http://www.tkk7.com/rendong/archive/2006/12/02/85047.htmlrendongrendongSat, 02 Dec 2006 08:58:00 GMThttp://www.tkk7.com/rendong/archive/2006/12/02/85047.htmlhttp://www.tkk7.com/rendong/comments/85047.htmlhttp://www.tkk7.com/rendong/archive/2006/12/02/85047.html#Feedback1http://www.tkk7.com/rendong/comments/commentRss/85047.htmlhttp://www.tkk7.com/rendong/services/trackbacks/85047.html
  • LoadModule proxy_module modules/mod_proxy.so   
  • LoadModule proxy_ajp_module modules/mod_proxy_ajp.so   
  • LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   
  •   
  • ProxyPass /admin balancer://tomcatcluster/admin  lbmethod = byrequests   stickysession = JSESSIONID   nofailover = Off   timeout = 5   maxattempts = 3   
  • ProxyPassReverse /admin balancer://tomcatcluster/admin   
  •   
  • < Proxy  balancer://tomcatcluster >   
  • BalancerMember ajp://localhost:8009  route = web1   
  • BalancerMember ajp://localhost:10009  smax = 10   route = web2   
  • BalancerMember ajp://localhost:11009  route = web3   
  • BalancerMember ajp://localhost:12009  smax = 10   route = web4   
  • </ Proxy >   


  • rendong 2006-12-02 16:58 发表评论
    ]]>
    վ֩ģ壺 ޺ݺݺһ| ߾þ֮ۺ߾þ| ֻˬapp| ޹AV| ޳aƬ߹ۿĶ | ëƬؿ| Ƶվ| պaëƬƵ| rhгijվ| ޾ƷŮ߹ۿ| ִִֻˬƵ| þþƷһ| ɫ18վWWW߲| ձѹۿ| ˳վ߹ۿ| Ļ| ŮƵƵȫƵ| Ůվ91ɫ| avר| һѹۿ| ҹ޲| ѹۿƬëƬ| ޹ƷҺ| þ޹ŷ޾Ʒһ| պѹۿһëƬ| þۺϸϾþù| ɫַ߹ۿ| ޹պһ| ò| ҹһƵ| ޳ַ| aëƬƵ| þav޾Ʒɫҹ| ޾Ʒվ| ޹һ˾þþƷ| | Ѹ߹ۿ| һëƬѹۿƵ| һëƬ| ձһ| 91鶹ƷԲ߹ۿ |