Java Glassfish:在部署期间修改EAR的部署描述符
经过几天的搜索、尝试和努力,我把这个问题发到了SO,尽管它似乎已经得到了回答 以下是场景: 我有一个EAR应用程序(目前)包含一个WAR和一个EJB模块。EJB模块使用JPA(persistence.xml),一些无状态会话bean通过Web服务公开。web服务使用jdbc领域的基本身份验证。web模块使用同一领域的表单身份验证 要求: 我需要能够将此应用程序部署在不同的服务器(dev/test/prod)上,或者使用不同的部署描述符部署在相同的服务器(或集群)上。每个应用程序实例中需要不同的部署设置包括:Java Glassfish:在部署期间修改EAR的部署描述符,java,jakarta-ee,glassfish,java-ee-6,glassfish-3,Java,Jakarta Ee,Glassfish,Java Ee 6,Glassfish 3,经过几天的搜索、尝试和努力,我把这个问题发到了SO,尽管它似乎已经得到了回答 以下是场景: 我有一个EAR应用程序(目前)包含一个WAR和一个EJB模块。EJB模块使用JPA(persistence.xml),一些无状态会话bean通过Web服务公开。web服务使用jdbc领域的基本身份验证。web模块使用同一领域的表单身份验证 要求: 我需要能够将此应用程序部署在不同的服务器(dev/test/prod)上,或者使用不同的部署描述符部署在相同的服务器(或集群)上。每个应用程序实例中需要不同的部
- persistence.xml中的jta数据源
- web.xml中的域名
- web.xml中的javax.faces.PROJECT_阶段
- glassfish-ejb-jar.xml中的webservice端点\端点地址uri和登录配置\领域
- application.xml中的上下文根(如果有什么不同,我可以将其移动到web.xml,见下文)
- glassfish-application.xml中的领域
- 我可以使用
asadmin set web context param
- 在
asadmin部署期间,我可以使用部署计划覆盖glassfish-ejb-jar.xml中的所有设置
- 这同样适用于glassfish-application.xml
- 我可能可以在
期间覆盖上下文根目录(我不知道EAR中的多个web模块如何工作)asadmin deploy
- 如何轻松修改web.xml中的域名
- 如何在persistence.xml中轻松修改jta数据源
非常感谢您的帮助或指点。您是否考虑过为部署描述符准备模板,并在构建期间使用属性文件中的值填充它们?如果您使用的是ant,您可以使用
expandproperties
过滤器。您可以使用部署计划jar完成所有这些事情
看起来部署计划jar的内容在与部署相关的任何繁重工作发生之前被推送到应用程序的归档/目录树中
看
及
谢谢你的回答,我会调查的。我正在使用Netbeans,所以我想这应该很容易。经过几次搜索,我设法在build.xml可重写目标中使用expandproperties。通过这种方式,我可以修改我需要的任何xml文件,包括web.xml或persistence.xml。谢谢你的精彩指点。对于每个部署场景(即customerA-UAT.properties和customerB Production.properties),我都有一个属性文件,并根据project.properties中的设置加载每个文件。谢谢您的回答!根据这一点,我认为部署计划jar只能覆盖特定于glassfish的部署描述符。我将尝试对web.xml和persistence.xml使用相同的方法并发布结果。我所有重写web.xml或persistence.xml的尝试都失败了,所以在Netbeans中构建ear期间,我将坚持使用ant的操作。