Status

Blog::Calendar

« March 2010
SunMonTueWedThuFriSat
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   
       
Today
XML

Blog::Navigation

Blog::Editing

Bookmarks::Blogroll

Blog::Referers

Today''s Page Hits: 199

Other sites

Google Analytics

Powered by Roller Weblogger.
All | JBoss&Seam | JSF | ZK | Music | General | Java
20071006 Saturday October 06, 2007
Missing content-assist hot key in Eclipse Europe
After downloaded and installed Eclipse Eurpoe, I opened my project and start coding on it.
A terribe thing was happened, the powferful assist key , alt + / is (content assist) out of functionality..

Two hot keys, which are very important to me, are  'ctrl + 1' and 'alt + /'.
If no content assist, I will be very bothering when writting code.

I have no idea when import a third party 'Maze' class, how could I find its package (for import) faster then open it javadoc.

the 'alt+/' is set to 'word complete' , not 'content assist', and key of cntent assist is 'ctrl+space'.
but the hot key 'ctrl+space' is my input language switch key in windows OS. it is double conflict.

Solution is really simple.
1. disable the hot key of word complete, since content assist is more powerful then word complete.
2. set hot key of content assist to 'alt+/'


20061104 Saturday November 04, 2006
Hibernate使用Proxool Connection Pool後,發生後端Exception
用了proxool JDBC connection pool
在部份close ScrollableResults的程式會出現下例Exception.
23:35:42,140  WARN AbstractBatcher:229 - exception clearing maxRows/queryTimeout
java.sql.SQLException: Invalid state, the PreparedStatement object is closed.
        at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.checkOpen(JtdsPreparedStatement.java:186)
        at net.sourceforge.jtds.jdbc.JtdsStatement.getMaxRows(JtdsStatement.java:722)
        at sun.reflect.GeneratedMethodAccessor93.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:68)
        at org.logicalcobwebs.cglib.proxy.Proxy$ProxyImpl$$EnhancerByCGLIB$$3a2eeb80.getMaxRows(<generated>)
        at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:225)
        at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:162)
        at org.hibernate.impl.AbstractScrollableResults.close(AbstractScrollableResults.java:94)
        at com.infinitiessoft.ouac.jsp.admin.p0005.UserRolesArtifact.refresh(UserRolesArtifact.java:116)
        at com.infinitiessoft.ouac.jsp.admin.UnitUserManagement.prerender(UnitUserManagement.java:1720)
        at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.prerender(ViewHandlerImpl.java:860)
        at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:295)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:221)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at com.sun.rave.web.ui.util.UploadFilter.doFilter(UploadFilter.java:194)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at com.infinitiessoft.ouac.jsp.OUACFilter.doFilter(OUACFilter.java:144)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
不過這個Exception只是被hibernate印出,並沒有被丟出來.
再經由翻hibernate的source code查証..
200 private void closeQueryStatement(PreparedStatement ps) throws SQLException {
201

202         try {
203
            //work around a bug in all known connection pools....
204
           
if ( ps.getMaxRows()!=0 ) ps.setMaxRows(0);
205
            if ( ps.getQueryTimeout()!=0 ) ps.setQueryTimeout(0);
206
        }catch (Exception e) {
208
            log.warn("exception clearing maxRows/queryTimeout", e);
209
            // ps.close(); //just close it; do NOT try to return it to the pool!
210
           
return; //NOTE: early exit!
211
       
}finally {
213
            closeStatement(ps);
214
        }
215

216         if ( lastQuery==ps ) lastQuery = null;
217
        
218
    }
可見得work around的還不夠.
所以當以後使用Hibernate 接Connection Pool時
出現這個Exception,而畫面沒有錯的話,就..忍著點當成沒看到吧...

--

另外一個使用proxool的問題~~
如果要了一個session產生一個long time的query result (通常是scrollable result...)
這時候如果在query時沒有下beginTransaction的話...
當這個session再執行下一次的query的話,前一個queryresult會被關掉~
可是通常作query時我們都不會下beginTransaction.
這裏的解法就只能在作long time的query result時要記得下beginTransaction了~

Copyright (C) 2003, 閣樓貓的五四三 (About Cat)