我正在将一个 WebService 项目部署到 jBoss AS7 中,除了 jBoss 不扩展我的 WAR 或 EAR 文件之外,一切都很正常。
已尝试将文件复制到“jboss-as-7.1.0.Final\standalone\deployments”文件夹并使用 WebConsole,但在这两种情况下结果是相同的。
如果我从 Eclipse 中部署,一切都运行正常。
我需要它来扩展我的文件,因为在应用程序初始化中我扫描了类
目录寻找正确的类来使用反射实例化。
EDIT :不知道这是否是 jBoss AS 7 或 jBoss AS 系列的特殊情况,因为我已经使用了 WebSphere 和 jBoss Web,并且它们都扩展了文件。
EDIT2 :添加了带有执行路径的System.out
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
它返回以下路径
C:\jboss-as-7.1.0.Final\bin\content\ServerEAR.ear\Server.war\WEB-INF\classes
女巫不存在。所以我搜索了类名并在以下位置找到了它
C:\jboss-as-7.1.0.Final\standalone\tmp\vfs\deployment5a9e98d5c43716c3\Server.war-e31a657d2bc3bd0f\WEB-INF\classes\r30
是否可以强制 JBoss 将文件提取到部署文件夹?或者我如何在运行时获取以前的路径。
忘记了这个问题,所以这是我解决它的方法:
public String getRealFilePath(String aFilePath) throws Exception
{
org.jboss.vfs.VirtualFile vFile = org.jboss.vfs.VFS.getChild(aFilePath);
URI fileNameDecodedTmp = org.jboss.vfs.VFSUtils.getPhysicalURI(vFile);
path = fileNameDecodedTmp.getPath();
System.out.println(path);
return path;
}
因此,在运行时我只需要使用原始问题值调用 getRealFilePath() 即可解决问题;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)