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)


Reply via email to