在jBoss AS 7中展开WAR或EAR文件

Gon*_*oso 3 deployment ear jboss war jboss7.x

我正在将一个WebService项目部署到一个jBoss AS7中,除了jBoss不扩展我的WAR或EAR文件外,一切正常.

已经尝试将文件复制到"jboss-as-7.1.0.Final\standalone\deployments"文件夹并使用WebConsole,但在两种情况下结果都是相同的.

如果我从Eclipse中部署,一切运行正常.

我需要它来扩展我的文件,因为在应用程序初始化中我扫描类目录,寻找使用反射实例化的正确类.

编辑:不知道这是jBoss AS 7或jBoss AS系列的特殊情况,因为我已经使用了WebSphere和jBoss Web,并且它们都扩展了文件.

EDIT2:添加了带执行路径的System.out

MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
Run Code Online (Sandbox Code Playgroud)

它返回以下路径

C:\jboss-as-7.1.0.Final\bin\content\ServerEAR.ear\Server.war\WEB-INF\classes
Run Code Online (Sandbox Code Playgroud)

巫婆不存在.所以我搜索了类名并将其命名为

C:\jboss-as-7.1.0.Final\standalone\tmp\vfs\deployment5a9e98d5c43716c3\Server.war-e31a657d2bc3bd0f\WEB-INF\classes\r30
Run Code Online (Sandbox Code Playgroud)

是不是可以强制JBoss将文件解压缩到部署文件夹?或者我如何在运行时获取上一个路径.

Gon*_*oso 6

已经忘记了这个问题,所以这就是我解决它的方式:

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;
}
Run Code Online (Sandbox Code Playgroud)

所以在运行时我只需要用原始问题值调用getRealFilePath(),问题就解决了;)