In fact, the spring plugin contains an example of a custom classloader. We have a classloader there that reloads classes, that should give you some ideas.
musachy On Wed, Sep 9, 2009 at 6:41 AM, Wes Wannemacher<w...@wantii.com> wrote: > I don't know if I would override the class loader (did I suggest that > earlier, if so, sorry :( ). I would take a look at overriding the > buildBean methods. Use your custom classloader to build the 'beans' > but do it in a way that tries your classloader first, then falls > through to the super class... For instance, the key lines in xwork's > SpringObjectFactory (which is where the meat of the spring-plugin is > located) looks like this - > > if (appContext.containsBean(className)) { > clazz = appContext.getBean(className).getClass(); > } else { > clazz = super.getClassInstance(className); > } > > The SpringObjectFactory is a bit large-ish because we added some > helpful spring integration (supporting autowiring, etc.), but IMO it > is still the best example for you to get what you want. I don't think > our fisheye instance at opensymphony is working, so the best thing to > do is either check out xwork from svn - > > svn co http://svn.opensymphony.com/svn/xwork/trunk > > And you'll find SpringObjectFactory.java in there under > trunk/core/src/main/java/com/opensymphony/xwork2/spring > > Or if you're not into svn, then you can probably just download the > file by hitting the following URL in your browser - > > http://svn.opensymphony.com/svn/xwork/trunk/core/src/main/java/com/opensymphony/xwork2/spring/SpringObjectFactory.java > > -Wes > > On Wed, Sep 9, 2009 at 6:25 AM, Andriy Pererva <andronix1...@gmail.com> wrote: >> Hello, Wes! >> Thank you for your quick help! I did exactly what you advised me, but >> something still doesn't work. Here are my steps: >> 1) Created CustomObjectFactory which extends StrutsObjectFactory, with >> only one method overriden - setClassLoader(). Inside this method I >> simply pass my custom classloader to super.setClassLoader(). >> 2) Inserted in my struts.xml (right after struts-default.xml >> inclusion) next strings: >> <bean type="com.opensymphony.xwork2.ObjectFactory" >> name="customFactory" >> class="efi.base.web.framework.CustomObjectFactory" /> >> <constant name="struts.objectFactory" value="customFactory"/> >> After that I tried to debug my CustomObjectFactory in Eclipse, but my >> overriden method setClassLoader() hasn't been invoked during struts >> initialization. >> Currently we are using Struts 2.0.11. >> Please, tell me what I'm doing wrong? What is the most neat way to >> intelligently pass my classloader to Struts? >> Again, thank you in advance for you answer! >> >> >> With best regards, >> Andriy >> >> >> >> On Thu, Sep 3, 2009 at 4:39 PM, Wes Wannemacher<w...@wantii.com> wrote: >>> I would suggest creating your own plugin... If the custom classes are >>> actions, validators, interceptors and type converters then just take a >>> look at the spring plugin for an example. You will want to write your >>> own implementation of the ObjectFactory, the ObjectFactory is in >>> charge of creating the struts2 app's actions, validators, >>> interceptors, type converters and beans. >>> >>> As far as enhancing the functionality of struts.xml processing, I >>> would first suggest you see if you can retrofit your application to >>> work with one of the existing plugins like 'conventions'. I only say >>> this because enhancing the XmlConfigurationProvider is quite a bit >>> more daunting than extending the ObjectFactory. If you really can't >>> adopt an existing plugin for configuration, then create an >>> implementation of ConfigurationProvider and take a look at the >>> StrutsXmlConfigurationProvider and see if you can get the dispatcher >>> to honor your new ConfigurationProvider. >>> >>> -Wes >>> >>> On Thu, Sep 3, 2009 at 9:33 AM, Andriy Pererva<andronix1...@gmail.com> >>> wrote: >>>> Hi, all! >>>> I'm working on a big java web project, which is based on Struts 2 >>>> framework. Now we are going to do some refactoring and split the >>>> project up in some parts: core and other auxillary functionality >>>> modules. Core classes located under classpath, but all the auxillary >>>> functionality classes will be moved to database and loaded via our >>>> custom ClassLoader. Among these classes there are some Stuts actions >>>> and part of the struts.xml file with appropriate mapping. >>>> How can I make Struts 2 aware of my custom ClassLoader in order to >>>> load these auxillary action classes from DB. Currently Struts cannot >>>> find and instantinate any of them >>>> Any suggestions would be very appreciated! >>>> >>>> Thank you in advance for any useful answer. >>>> >>>> With best regards, >>>> Andriy. >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> For additional commands, e-mail: user-h...@struts.apache.org >>>> >>>> >>> >>> >>> >>> -- >>> Wes Wannemacher >>> >>> Head Engineer, WanTii, Inc. >>> Need Training? Struts, Spring, Maven, Tomcat... >>> Ask me for a quote! >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>> For additional commands, e-mail: user-h...@struts.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> >> > > > > -- > Wes Wannemacher > > Head Engineer, WanTii, Inc. > Need Training? Struts, Spring, Maven, Tomcat... > Ask me for a quote! > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > > -- "Hey you! Would you help me to carry the stone?" Pink Floyd --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org