2013-01-10 45 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。我在答案中改變了這一點。 –