我正在使用以下技术开发一些 RESTful Web 服务
* Java 1.7
* Jersey 2.4.1
* spring 3.2.1
* Jboss-5.1.0.GA
到目前为止,我已经使用eclipse构建了war文件,有分解版和压缩版。我已将文件一次复制到一个,{jboss-home}/server/web/deploy
并使用命令行通过运行run.bat -c web
. 在这两种情况下,服务器都没有错误地启动,并且日志文件是相同的。(不包括时间戳)
当我部署展开的 war 文件然后导航到 urlhttp://mydomain.com:8080/{app}/rest/application.wadl
时,jersey 正确识别了带注释的资源,我可以按预期使用它们。
球衣注释
@Path("/v1/ping")
@Service("pingV1")
public class PingV1 extends BaseResource {
@Autowired
private PingBusiness pingBusiness;
@GET
@Produces(MediaType.APPLICATION_XML)
public PingVO getPing(
@Context UriInfo uriInfo,
@Context HttpServletRequest httpServletRequest){
...
PingVO pingVO = pingBusiness.doGet();
...
return pingVO;
}
}
application.wadl(动态生成)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.4.1 2013-11-08 12:08:47"/>
<grammars>
<include href="application.wadl/xsd0.xsd">
<doc xml:lang="en" title="Generated"/>
</include>
</grammars>
<resources base="http://mydomain.com:8080/{app}/rest/">
<resource path="/v1/ping">...</resource>
<resource path="/">...</resource>
<resource path="application.wadl">...</resource>
</resources>
</application>
但是,当我部署压缩的 .war 文件并导航到同一个 urlhttp://mydomain.com:8080/{app}/rest/application.wadl
时,它找不到带注释的资源,当我点击预期的 url 时,jboss 返回 404 - NOT FOUND。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.4.1 2013-11-08 12:08:47"/>
<grammars/>
<resources base="http://mydomain.com:8080/{app}/rest/">
<resource path="application.wadl">...</resource>
</resources>
</application>
最后,我使用 winRAR 将压缩后的 war 文件的内容提取到一个文件夹中,然后使用 Beyond Compare 将原始爆炸战争与刚刚提取的上下文进行文件夹比较,它们是相同的。
这让我相信 jboss 如何部署爆炸战争与压缩战争文件有一些独特之处,但我不明白这可能是什么或为什么它会这样。任何人都可以帮助或指出我的新方向吗?
虽然一个简单的响应可能没问题,只需部署分解的 war 文件,我想了解为什么会发生这种情况并继续使用我现有的 build.xml 生成压缩的 .war 文件。