`
kingsz1
  • 浏览: 155091 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Glassfish 3 Netbeans 6.8 之部署失败

阅读更多
最近老出现部署失败的情况。我是在家里和办公室都用同样的环境,用U盘把项目的目录全部拷贝,在家里和办公室的电脑间拷贝和继续开发,虽然我在建立数据库是用同一个 sql 文件,数据库的访问应该是没问题的。但是,每一次拷贝后来部署,总出问题。

下面是错误的信息:






从这些信息看到是数据库 连接池 和 jndi 出问题了。我尝试把连接池取消,删除 persistence.xml 然后重新生成 persistence.xml,但问题还是存在。



最后,我的处理是,把 连接池的相关链接取消,删除persistence.xml,把 数据库 连接删除!重新建立 数据库连接,重新生成 persistence.xml, 在生成 persistence.xml 的过程中 建立新的 jndi。然后部署,顺利完成。

有什么办法把 数据库连接、连接池和 jndi 等备份出来装到其他机器?

======================================================
经过网上乱找一通,发现以下帖子:

(1) Glassfish V3 Resources with the Administration CLI tool (asadmin)
http://weblogs.java.net/blog/felipegaucho/archive/2010/03/04/glassfish-v3-resources-administration-cli-tool-asadmin

(2) TOTD #121: JDBC resource for MySQL and Oracle sample database in GlassFish v3
http://blogs.sun.com/arungupta/entry/ttd_121_jdbc_resource_for
这个网站有多个很好的jpa2, ejb3 和 web service 例子,很值得看看。

当然,最重要的是 glassfish v3 的文档:820-7701
wiki.glassfish.java.net/attach/ReferenceManual/820-7701.pdf

根据以上的资料,可以有个眉目了:

以下操作是在启动 glassfish 后,在命令行先运行 asadmin, 然后输入相应的操作:

(1) 列出现有的配置:链接池和jndi

asadmin> list-jdbc-connection-pools

asadmin> list-jdbc-resources

(2) 删除指定的连接池和jndi
asadmin> delete-jdbc-resource jndi/bulauser1
这个删除jndi名字为 "jndi/bulauser1" 的资源

asadmin> delete-jdbc-connection-pool mysql_buladbs_dukePool
这个删除 连接池 mysql_buladbs_dukePool

输入 exit 退出 asadmin

(3) 建立新的连接池和jndi名字
asadmin create-jdbc-connection-pool --datasourceclassname com.mysql
.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource --restype javax.sql.Connectio
nPoolDataSource --property User=MyDBUser:Password=MyDBPassWord:serverName=localhost:portNumb
er=3306:databaseName=User1db mysql_User1_dukePool

这个操作实在太长,呵呵,所以把它放到一个 bat 文件。注意的是 --property项目:

User=MyDBUser 我的数据库的用户名
Password=MyDBPassWord 我的数据库的密码
serverName=localhost 我的mysql服务器,localhost 或 真实的ip地址
portNumber 我的mysql的链接端口,一般就是 3306
databaseName 我的数据库的名字
mysql_User1_dukePool 我的链接池

网上的例子用 url 但总出错,按官方文档每项具体列出,就可正常运行了。

asadmin create-jdbc-resource --connectionpoolid mysql_User1_dukePool jndi/Myuser1

这个操作也是放在一个 bat 文件。它是在链接池 mysql_User1_dukePool 上建立一个 jndi名字 jndi/Myuser1

以上操作基本就可以手工查看、删除和建立链接池和jndi name.

不过,后来我发现,每次部署后,以前就的 jndi 名字又跑出来,经过观察,发现 链接池和 jndi name 还在project 的 sun-resources.xml 有记录。所以,还需要手工修改这个文件:
jdbc-connection-pool 的项 name 必须是我的链接池名字
jdbc-resource 可能有几行(呵呵!)只保留1行,而且其中的项 pool-name 改为我的连接池 名字, jndi-name 改为我的jndi名字。

然后重新建立 persistence.xml 这样部署就不会出错也不会再跑出旧的连接池和jndi名字了。
:-



  • 大小: 49.6 KB
  • 大小: 64.6 KB
  • 大小: 37.1 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics