Issue Details (XML | Word | Printable)

Key: LUTECE-1006
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: ILE
Reporter: YCH
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Lutèce

Exception when calling RegularExpression or CaptchaSecurity service while plugins are not installed or enabled

Created: 10/Feb/09 02:58 PM   Updated: 26/Jan/10 03:44 PM
Component/s: core
Affects Version/s: None
Fix Version/s: 2.4.0

Time Tracking:
Not Specified


 Description  « Hide

When you call the method "isAvailable" of RegularExpression or CaptchaSecurity service while the plugin regularexpression or jcaptcha is not installed or enabled, you got a stack trace.

For example, with the RegularExpression service, the following stack trace is displayed:

org.springframework.beans.factory.BeanDefinitionStoreException:
IOException parsing XML document from URL
[file:D:/Workspace/site-files2docs/target/lutece/WEB-INF/conf/plugins/regularexpression_context.xml];
nested exception is java.io.FileNotFoundException:
D:\Workspace\site-files2docs\target\lutece\WEB-INF\conf\plugins\regularexpression_context.xml
(Le fichier spécifié est introuvable)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
	at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)
	at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
	at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
	at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84)
	at fr.paris.lutece.portal.service.spring.SpringContextService.getContext(SpringContextService.java:116)
	at fr.paris.lutece.portal.service.spring.SpringContextService.getPluginBean(SpringContextService.java:87)
	at fr.paris.lutece.portal.service.regularexpression.RegularExpressionService.<init>(RegularExpressionService.java:62)
	at fr.paris.lutece.portal.service.regularexpression.RegularExpressionService.getInstance(RegularExpressionService.java:88)
	at fr.paris.lutece.plugins.files2docs.web.Files2DocsJspBean.getSelectFiles(Files2DocsJspBean.java:552)
	at org.apache.jsp.jsp.admin.plugins.files2docs.SelectFiles_jsp._jspService(SelectFiles_jsp.java:65)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at fr.paris.lutece.portal.service.filter.MainFilter.doFilter(MainFilter.java:101)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at fr.paris.lutece.portal.web.upload.UploadFilter.doFilter(UploadFilter.java:144)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at fr.paris.lutece.portal.web.upload.DosGuardFilter.doFilter(DosGuardFilter.java:126)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at fr.paris.lutece.portal.web.user.AuthenticationFilter.doFilter(AuthenticationFilter.java:137)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at fr.paris.lutece.portal.web.encoding.EncodingFilter.doFilter(EncodingFilter.java:86)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException:
D:\Workspace\site-files2docs\target\lutece\WEB-INF\conf\plugins\regularexpression_context.xml
(Le fichier spécifié est introuvable)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
	at org.springframework.core.io.UrlResource.getInputStream(UrlResource.java:123)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
	... 53 more


YCH added a comment - 26/Jan/10 02:46 PM

A fix was commited in "SpringContextService" class in order to reduce the log level (debug) for exceptions raised when a plugin context file is not found. However, it does not solve entirely the problem.

"RegularExpressionService" and "WorkflowService" use the singleton pattern which allows to instanciate only once each service. Therefore, only one exception can be raised.

Instead, "CaptchaSecurityService" does not use this pattern. It would be useful to implement this pattern in order to limit the number of exceptions raised. Moreover, this implementation increases performance. However, all Lutece components using jcpatcha must be updated.