2013-01-10 44 views
2

为了让远程调用具有恒定的JNDI名称,我想从EAR包名称中删除该版本。我用maven-ear-plugin中的标签< finalName>来做。 它工作正常,但是当我部署(运行)包装使用Netbeans(版本7.1.2),它提出了一个例外: java.lang.IllegalArgumentException异常:部署如果使用Maven更改包名称,则无法使用Netbeans部署耳朵

它似乎总是Netbeans的预期没有存档像这样的名称$ {project.artifactId} - $ {project.version} .ear。如何改变这种行为?

编辑:它只发生在远程(Glassfish)服务器上部署时。

非常感谢! JM

回答

2

我的工作具有相同的结构和你一个NetBeans EAR项目,但是当我运行或从NetBeans中调试应用程序它部署target文件夹下的${project.artifactId}-${project.version}.ear,从Maven的EAR-产生的耳朵插件不被Netbeans使用,无论如何你都可以手动部署它,我已经成功地完成了它。这是一个已知的Netbeans行为,例如你可以参考这个link

+0

感谢您的回答。实际上,我尝试将其生成为$ {project.artifactId} .ear,而不使用文件名中的版本,将其部署到远程服务器上(它不会为Glassfish创建gfdeploy目录)。我也可以手动执行它,但在这种情况下,调试会话不会在部署时正确启动,我必须在随后附加调试器。 – JMT

+1

我调查了一段时间,发现它是一个已知的Netbeans问题,除了用这个傻瓜名称之外没有办法调试耳朵。我为这个页面添加了书签,但是我失去了它,也许是在Netbeans bugzilla上。 – remigio

+1

找到了! (http://netbeans.org/bugzilla/show_bug.cgi?id=213873) – remigio

0

要获得您的EJB的一致名称,首先必须为您的应用程序获得一致的名称。应用程序的名称可以在标签<application-name>YourGreatApp</application-name>的应用程序描述符文件application.xml中设置。

如果未设置应用程序名称,则将使用EAR文件名作为应用程序名称。使用maven你应该总是设置你的应用程序名称。

application.xml文件位于EAR中的META-INF /下。

+0

我已经创建了一个部署文件application.xml。我已经尝试过使用标签应用程序名称甚至YourGreatApp(它来自哪里?不在xsd中),但它不起作用。它仍然为本地部署添加版本,并且不会远程部署。 – JMT

+0

对不起,这是误导。标签名称是应用程序名称。所以你的application.xml应该包含这样一行: YourGreatApp。我在答案中改变了这一点。 –