struts convention plugin to scan jar files for actions

本文摘自:http://lerluc.iteye.com/blog/560972

struts convention plugin to scan jar files for actions
StrutsEclipseRESTSpringAnt
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
Java代码
private UrlSet buildUrlSet() throws IOException {
ClassLoaderInterface classLoaderInterface = getClassLoaderInterface();
UrlSet urlSet = new UrlSet(classLoaderInterface, this.fileProtocols);
//...
//removed the rest of codes
}

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
Java代码
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
}

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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值