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.
猜你喜欢
转载自haroldxie.iteye.com/blog/1663533
今日推荐
周排行