これ、ハマってる方がいるのかわからないのですが、自分は結構ハマったのでメモ。
手元の環境は
Windows 8 Pro(64bit)
JDK 7u67
NetBeans 8.0.1
GlassFish 4.1
で、Java DB(Derby)のテーブルからNetBeansの自動生成機能でエンティティ・クラス作ったりしたアプリをデプロイしたとき
重大: Exception while preparing the app : Invalid resource : MemoJNDI__pm
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : MemoJNDI__pm
at org.glassfish.jdbcruntime.service.JdbcDataSource.validateResource(JdbcDataSource.java:81)
at org.glassfish.jdbcruntime.service.JdbcDataSource.setResourceInfo(JdbcDataSource.java:62)
at org.glassfish.jdbcruntime.JdbcRuntimeExtension.lookupDataSourceInDAS(JdbcRuntimeExtension.java:136)
…略
みたいなエラーでこけてしまう。うーん、今まであまりなったことなかったのに…と。
自動生成されたpersistence.xmlのjta-data-sourceは
<persistence-unit name="sample.javaee_MemoApp_war_1.0PU" transaction-type="JTA">
<jta-data-source>MemoJNDI</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
となっていて「__pm」なんてつけてないんだけど…??みたいな。
ググると海外情報では同じエラーの人が多々いて、回答みてやってみたりもしたけど、ダメでした。
java - Glassfish can not find JNDI DataSource while deploying - Stack Overflow
java - JNDI resource name appended with _pm . Deployment fails . - Stack Overflow
java - Glassfish Server Error when deploy .war: Error occurred during deployment: Exception while preparing the app : Invalid resource - Stack Overflow
http://www.nagazuka.nl/2014/03/invalid-resource-with-netbeans-8_27.html
というか、GlassFish3.1.2.2とかNetBeans7.3でもなってるっぽい。自分はなったことないのだが。。。
で、ドメインを作り直すと、普通に動くようになりました。
前に@megascusさんが以下ブログでパスワードの所で注意、とあって、一番下にドメイン作り直し、というをやってみた感じ。
#JJUG_CCC Java EE 7 HoL補足 - 水まんじゅう
NetBeansのサーバ追加で新しくGlassFish4.1を食わせなおしただけですが。
デフォルトで作られるドメインが駄目なのかなぁ。domain.xmlとか細かく見比べてみないと。
NetBeansで自動生成されるglassfish-resources.xmlでJDBCのconnection-poolやresourceを定義するのではなく、GlassFishの管理コンソールで手動作成すればいけるとも書いてありましたが、まだ試してないです。