No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally.
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader Installing those extensions instead of passing them in the macro is not an option ? On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote: > Hi, > > the exact goal is to load a list of maven artifacts and their dependencies > inside of a the groovy macro, to have access to the classes of the belonging > jar files. > Using an URLStreamHandler means, I can only load one jar URL per artifact but > I want to load multiple jar URLs per maven artifact (the dependencies of the > artifact). > Currently I created an delegating class loader (inside of an extended groovy > macro) which loads these maven artifacts. This works, but it produces a > memory leak, because the creaded AttachmentClassLoader is stored inside of > the execution context. So the classes are loaded each time the macro is > loaded. Therefore I look for an alternative way to load these URLs. > > I hope you can help me? > > Roman > > -----Ursprüngliche Nachricht----- > Von: users [mailto:[email protected]] Im Auftrag von Thomas > Mortagne > Gesendet: Dienstag, 8. Juli 2014 16:02 > An: XWiki Users > Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader > > On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> > wrote: >> Hi, >> while I tried to implement the >> org.xwiki.classloader.ExtendedURLStreamHandler in the described way I >> recognized some problems: >> >> >> - First, the class >> org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener >> uses the >> org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which >> only constructs AttachmentClassLoaders which uses >> org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. >> Last one cannot be exchanged. >> >> In the current implementation this is no problem because the ScriptMacro >> only supports the protocol “attach” and the URL Format itself. The >> AttachmentURLStreamHandler can handle this. >> >> >> >> I think the Used ClassLoaderFactory should automatically get the right Class >> Loader depending on the used protocol. >> >> >> >> - Second, I also have to resolve the dependencies of the given maven >> artifact in the URL. So I have to put more than one jar-URL in the URL >> Connection. Otherwise I have to declare all the dependencies in the URL >> String. >> >> Do you know a solution for my problems? > > What is the goal exactly ? From what I understood (and how I see > http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url > that just contains the extension id (and optionally maybe the version, need > to define a syntax for that) which is then requested with extension manager > in the registered repositories. Extension Manager API gives you the > dependencies of the extension. The simplest here is probably to generate an > install plan and load all the extension listed in the plan. > >> >> Thanks >> >> Roman >> >> >> >> Von: Vincent Massol [mailto:[email protected]] Im Auftrag von >> [email protected] >> Gesendet: Freitag, 4. Juli 2014 14:30 >> An: Summer, Roman; XWiki Users >> Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader >> >> Hi Roman, >> >> On 4 Jul 2014 at 13:11:23, Summer, Roman >> ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> >> wrote: >> >>> Hello >>> >>> I want to write a java script macro >> >> I had to read this 3 times to understand it ;) (I kept thinking about >> "javascript macro”). >> >>> which is able to load jars from an external currently not supported source >>> (e.g. from a maven repository). Therefore I want to exchange the used class >>> loader. Overriding the ScriptMacroParameters#getJars() method is not >>> possible for me, because I only want to load the classes in view and not in >>> edit mode. >>> >>> My question: How is it possible to exchange the currently injected >>> implementation of the interface >>> org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFacto >>> r y for my macro to exchange the used class loader or is there >>> another recommended official way to ream my aim. >> >> See >> http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API# >> H >> AddinganewURLStreamHandler >> >> Thanks >> -Vincent >> >> PS1: You should checkout OPS4J Pax URL: >> https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol >> >> PS2: I think we would be interested by such a contribution. Actually a great >> contribution would be to bridge our code to use PAX URL (not even sure >> anything is needed for that!). We probably just need a tutorial explaining >> how to use PAX URL in XWiki. >> _______________________________________________ >> users mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/users > > > > -- > Thomas Mortagne > _______________________________________________ > users mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/users > _______________________________________________ > users mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/users -- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
