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

时间:2012-03-06 11:40:15

标签: deployment jboss war ear 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();

并返回以下路径

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将文件解压缩到部署文件夹?或者我如何在运行时获取上一个路径。

3 个答案:

答案 0 :(得分: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;
}

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

答案 1 :(得分:2)

我相信在部署时你不能强迫Jboss7自动扩展war文件。

但是,您可以复制已展开的war,但不应该有任何问题。

实际上,如果仔细查看Eclipse部署,您会注意到它将整个目录复制到部署目录,而不是war文件本身。

顺便说一下,为什么需要部署爆炸?如果您需要访问和读取某些文件作为资源,可以查看classpath resources

答案 2 :(得分:2)

请检查您的类路径设置。我最近遇到了同样的问题,并通过添加系统环境变量解决了这个问题:

CLASSPATH=.;
C:\Program Files\Java\jdk1.6.0_10\lib;
C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar;
C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar; `