`
lerluc
  • 浏览: 17214 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

struts convention plugin to scan jar files for actions

阅读更多
i intended to pack my action classes in jar file and utilize the convention plugin to initialize them. i did it following this instruction.



the plugin didn't recognize my jar file. >_<



with the source code of convention plugin, i traced to org.apache.struts2.convention.PackageBasedActionConfigBuilder
    private UrlSet buildUrlSet() throws IOException {
        ClassLoaderInterface classLoaderInterface = getClassLoaderInterface();
        UrlSet urlSet = new UrlSet(classLoaderInterface, this.fileProtocols);
        //...
        //removed the rest of codes
    }

i found my jar in the classLoaderInterface but the urlSet didn't recognize it. let's dig deeper. it's a class in xwork. the xwork 2.1.6 release is not updated on the official site. here is the address.



com.opensymphony.xwork2.util.finder.UrlSet
    private static List<URL> getUrls(ClassLoaderInterface classLoader) throws IOException {
        List<URL> list = new ArrayList<URL>();

        //find jars
        ArrayList<URL> urls = Collections.list(classLoader.getResources("META-INF"));
        //...
        //removed the rest of codes
}

classLoader.getResources("META-INF") - this is how xwork finds jar files. spring does it with the same approach and luckily someone(Ingo Düppe) from their side gave us a heads-up on the META-INF.



http://jira.springframework.org/browse/SPR-1670
引用
Please be careful with this approach. Not all jar files do have a META-INF directory entry even when files exists like META-INF/manifest.mf. For instance jars build with eclipse do not contain a META-INF directory entry so this approach will not find these jars.

thanks Ingo! you save my day.



turns out that my jar was built with eclipse export tool and had no directory entry of the META-INF folder. i packed it again with ant task then the plugin found it.   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics