On 24/02/14 18:00, Harry Metske (JIRA) wrote:
[
https://issues.apache.org/jira/browse/JSPWIKI-812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13910581#comment-13910581
]
Harry Metske commented on JSPWIKI-812:
--------------------------------------
Brian,
I have used this property in jspwiki-custom.properties only. And only if I
needed to load a plugin from an "external jar".
Why would we need it in jspwiki.properties ? Why WikiJSPFilter ?
Sorry to confuse you Harry. My paranoia made me backup the exploded wiki
directory /inside/ tomcat's webapps directory. Tomcat was trying to
start the backup as well as the new version, with quite confusing
results for me.
I've read your original comments more carefully and am in the process of
tidying up my own mess. Sorry to have bothered you, but thanks for
replying so quickly.
Brian
regards,
Harry
plugin jars should be loadable from outside the war
---------------------------------------------------
Key: JSPWIKI-812
URL: https://issues.apache.org/jira/browse/JSPWIKI-812
Project: JSPWiki
Issue Type: Improvement
Components: Plugins
Affects Versions: 2.9, 2.9.1, 2.10
Environment: Ubuntu Linux Mint 14 Nadia
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
JSPWiki 2.10.0
Reporter: Harry Metske
Assignee: Harry Metske
Fix For: 2.10.1
Attachments: JSPWIKI-812.patch
I stumbled upon this bug while testing a non-core plugin.
To reproduce :
* add the plugin jar tomcat's lib directory (not the WEB-INF/lib dir of jspwiki)
* update the jspwiki.plugin.searchPath property to include the plugin's package
name
* create a page that references the page
* restart your wiki
It will not initialize and throw the following exception :
{noformat}
Jan 18, 2014 1:20:24 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter WikiJSPFilter
java.lang.NoClassDefFoundError: org/apache/wiki/api/plugin/WikiPlugin
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1700)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
at org.apache.wiki.util.ClassUtil.findClass(ClassUtil.java:103)
at
org.apache.wiki.plugin.DefaultPluginManager.findPluginClass(DefaultPluginManager.java:256)
at
org.apache.wiki.plugin.DefaultPluginManager.newWikiPlugin(DefaultPluginManager.java:769)
at
org.apache.wiki.parser.PluginContent.executeParse(PluginContent.java:217)
at
org.apache.wiki.parser.JSPWikiMarkupParser.handleHyperlinks(JSPWikiMarkupParser.java:1467)
at
org.apache.wiki.parser.JSPWikiMarkupParser.handleOpenbracket(JSPWikiMarkupParser.java:2269)
at
org.apache.wiki.parser.JSPWikiMarkupParser.parseToken(JSPWikiMarkupParser.java:2844)
at
org.apache.wiki.parser.JSPWikiMarkupParser.fillBuffer(JSPWikiMarkupParser.java:2643)
at
org.apache.wiki.parser.JSPWikiMarkupParser.parse(JSPWikiMarkupParser.java:2916)
at
org.apache.wiki.providers.CachingProvider.refreshMetadata(CachingProvider.java:441)
at
org.apache.wiki.providers.CachingProvider.getPageInfo(CachingProvider.java:484)
at org.apache.wiki.PageManager.getPageInfo(PageManager.java:420)
at org.apache.wiki.WikiEngine.getPage(WikiEngine.java:1892)
at org.apache.wiki.WikiEngine.getPage(WikiEngine.java:1872)
at
org.apache.wiki.ReferenceManager.initialize(ReferenceManager.java:267)
at org.apache.wiki.WikiEngine.initReferenceManager(WikiEngine.java:728)
at org.apache.wiki.WikiEngine.initialize(WikiEngine.java:623)
at org.apache.wiki.WikiEngine.<init>(WikiEngine.java:430)
at org.apache.wiki.WikiEngine.getInstance(WikiEngine.java:370)
at org.apache.wiki.ui.WikiServletFilter.init(WikiServletFilter.java:82)
at org.apache.wiki.ui.WikiJSPFilter.init(WikiJSPFilter.java:88)
at
org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4746)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5399)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
at
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException:
org.apache.wiki.api.plugin.WikiPlugin
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 53 more
{noformat}
If you undo one of the three steps, problem is solved.
Also, if you move (not copy) the plugin jar to jspwiki's WEB-INF/lib directory,
the problem does not occur.
We want to stay away from war surgery and therefore having plugin jars in
tomcat's lib directory should be possible.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)