小编Ara*_*yan的帖子

忽略Spring Security SavedRequest中的WebSocket连接

我有一个带有spring-security-core插件和Atmosphere框架的Grails应用程序.

如果我从已打开WebSocket连接的页面注销,则Spring Security会将WebSocket连接的URL保留为SavedRequest.

DEBUG savedrequest.HttpSessionRequestCache  - DefaultSavedRequest added to Session: DefaultSavedRequest[http://localhost:8080/formx/formX/update]
DEBUG savedrequest.HttpSessionRequestCache  - DefaultSavedRequest added to Session: DefaultSavedRequest[http://localhost:8080/formx/formX/notifications/?X-Atmosphere-Transport=close&X-Atmosphere-tracking-id=b5d8fde4-d950-41fd-9b49-02e06799a36f&conversationId=988080042]
Run Code Online (Sandbox Code Playgroud)

日志中的第一个条目具有SavedRequest的正确值,但不知何故它被Atmosphere WebSocket连接覆盖.

如何告诉Spring Security不要将Atmosphere WebSocket连接用作SavedRequest?

我想我可以使用一些Atmosphere Protocol Specific Header来区分连接.

grails spring-security websocket atmosphere

19
推荐指数
1
解决办法
858
查看次数

记录方法执行时间

在java/groovy应用程序中,我正在使用org.slf4j.Logger 我喜欢记录方法执行时间并建议使用以下代码

def startTime
LOGGER.isDebugEnabled() {
    startTime = System.currentTimeMillis()
}

doSomething()

LOGGER.debug("Execution took {}ms", (System.currentTimeMillis() - startTime))
Run Code Online (Sandbox Code Playgroud)

我认为这段代码很"难看".谁能提出更优雅的建议?

java groovy logging

10
推荐指数
2
解决办法
3万
查看次数

grails-2.3.0.M1无法在IntelliJ IDEA 130.754中启动

我在IntelliJ IDEA 130.754上的grails 2.2.1上运行了项目.

将grails版本升级到2.3.0.M1后,grails无法启动

从IDEA控制台登录

/home/aram/local/java/bin/java -Dgrails.home=/home/aram/local/grails-2.3.0.M1 -Dbase.dir=/home/aram/projects/grails/app/formx -Dtools.jar=/home/aram/local/java/lib/tools.jar -Dgroovy.starter.conf=/home/aram/local/grails-2.3.0.M1/conf/groovy-starter.conf -Xmx768M -Xms768M -XX:MaxPermSize=256m -XX:PermSize=256m -Dfile.encoding=UTF-8 -classpath /home/aram/local/grails-2.3.0.M1/lib/org.codehaus.groovy/groovy-all/jars/groovy-all-2.1.3.jar:/home/aram/local/grails-2.3.0.M1/dist/grails-bootstrap-2.3.0.M1-sources.jar org.codehaus.groovy.grails.cli.support.GrailsStarter --main org.codehaus.groovy.grails.cli.GrailsScriptRunner --conf /home/aram/local/grails-2.3.0.M1/conf/groovy-starter.conf upgradeError: Could not find or load main class org.codehaus.groovy.grails.cli.support.GrailsStarter
Run Code Online (Sandbox Code Playgroud)

我想问题是

  /home/aram/local/grails-2.3.0.M1/dist/grails-bootstrap-2.3.0.M1-sources.jar
Run Code Online (Sandbox Code Playgroud)

也许它需要

/home/aram/local/grails-2.3.0.M1/dist/grails-bootstrap-2.3.0.M1.jar 
Run Code Online (Sandbox Code Playgroud)

代替.

任何帮助如何解决问题?

grails intellij-idea

8
推荐指数
1
解决办法
3784
查看次数

Grails 2.3.4池空.无法在30秒内获取连接

我们在tomcat 7.0.30中有grails应用程序破坏.Grails版本为2.2.4,去年运行非常稳定.我试图将grails版本切换到2.3.4,在测试环境中它表现正常(没有任何问题).但是当我在20分钟后投入生产时,我开始得到以下例外情况

[ajp-bio-9009-exec-430] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:100; busy:100; idle:0; lastwait:30000].. Stacktrace follows:
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [ajp-bio-9009-exec-430] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:100; busy:100; idle:0; lastwait:30000].
        at grails.gorm.DetachedCriteria$_count_closure4.doCall(DetachedCriteria.groovy:686)
        at grails.gorm.DetachedCriteria$_withPopulatedQuery_closure10.doCall(DetachedCriteria.groovy:931)
        at org.grails.datastore.gorm.GormStaticApi$_withDatastoreSession_closure20.doCall(GormStaticApi.groovy:680)
        at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:302)
        at org.grails.datastore.gorm.AbstractDatastoreApi.execute(AbstractDatastoreApi.groovy:37)
        at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:679)
        at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:913)
        at grails.gorm.DetachedCriteria.count(DetachedCriteria.groovy:684)
        at grails.gorm.DetachedCriteria.count(DetachedCriteria.groovy:683)
        at com.webbfontaine.wftaglib.BeanDataLoadController.doLoadData(BeanDataLoadController.groovy:30)
        at com.webbfontaine.wftaglib.BeanDataLoadController$_closure1.doCall(BeanDataLoadController.groovy:14)
        at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
        at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
        at org.josso.tc70.agent.SSOAgentValve.invoke(SSOAgentValve.java:684)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)

在我们的应用程序中,所有对DB的查询都是通过Grails GORM完成的,我们不使用任何SQL或HQL查询.

我的猜测是grails 2.3.4本身出现了问题(某些连接未正确关闭/返回池中).

我错过了什么或它的grails问题?有任何想法吗 ?

grails tomcat grails-orm

7
推荐指数
2
解决办法
7511
查看次数

使用Date字段提高查询执行的性能

我们在生产环境中安装了Oracle 11G R2.

我喜欢提高1个查询的性能

select .... 
  from FORMX 
 where (INF_TYP  =?)
   AND (STATUS IN (?, ?, ?, ?, ?, ?)) 
   AND ((VAL_DAT>=? OR VAL_DAT  IS NULL));
Run Code Online (Sandbox Code Playgroud)

VAL_DAT列的类型是DATE.添加索引VAL_DAT不会产生明显效果.

任何想法如何调整或如何更改查询?

编辑

我们在该表中总共有大约150K的记录(1年生产)条件VAL_DAT is null适用于大约8%的记录.

"INF_TYP"和"STATUS"的类型是VARCHAR2(2 CHAR)和VARCHAR2(10 CHAR).

sql oracle oracle11gr2

1
推荐指数
1
解决办法
69
查看次数