前言

Glassfish是一款由Sun公司开发的(现由甲骨文公司赞助)开源的免费的应用服务器,它既是EJB容器也是WEB容器。Glassfish支持最新版的Java EE标准。

Glassfish与Tomcat的区别

Tomcat只是WEB容器,并不支持EJB,而Glassfish既是WEB容器也是EJB容器。

Glassfish的安装

首先去Glassfish的官网https://javaee.github.io/glassfish/下载Full Platform版本的Glassfish文件压缩包(见图1),下载完成之后解压压缩包到自定义的文件夹路径(见图2),然后复制Glassfish文件夹下Bin文件夹的路径,在系统Path环境变量中添加此路径(见图3),安装完成。

图1

图2

图3

Glassfish的启动和停止

在安装完成之后,打开命令行,输入asadmin start-domain即可启动默认的domain1容器(见图4)。

图4

在控制台输入stop-domain即可停用默认的domain1容器(见图5)。

图5

备注:1、可以直接输入asadmin回车进入命令持续输入状态;

2、可以在start-domain/stop-domain后面加容器名启动/停止指定容器。

应用的部署和下线

Glassfish部署和下线应用有两种方式:admin控制台和命令行,流程如下:

admin控制台:
#部署应用:打开浏览器,在地址栏输入localhost:4848(domain1默认admin端口)回车,进入admin控制台,点击Deploy an Application(见图6),选择你导出的项目包之后点击OK即可部署完成(见图7)。

#下线应用:在admin主页面点击List Deployed Applications,此时Glassfish会展示所有部署的应用,选中你想下线的应用包,点击Undeploy即可下线应用。(见图8)

图6

图7

命令行:
#部署应用:打开CMD,输入asadmin deploy +项目包绝对路径(见图8)即可部署完成。

#下线应用:在CMD里输入adadmin undeploy +项目包名称(见图9)即可下线成功。

图8

图9

常见问题

错误1:PWC6199: Generated servlet error:

源值1.5已过时, 将在未来所有发行版中删除

原因:因为Glassfish默认使用的JDK版本是1.5,但是我们一般使用的JDK都是1.8及以上,所以会不匹配,需要我们在配置文件里自行定义JDK版本。

解决办法:我们打开Glassfish安装目录下的glassfish5\glassfish\domains\domain1\config文件夹里的default-web.xml文件,找到345行,在下面添加如下代码:

<init-param>

<param-name>compilerSourceVM</param-name>

<param-value>1.8</param-value>

</init-param>

<init-param>

<param-name>compilerTargetVM</param-name>

<param-value>1.8</param-value>

</init-param>

添加完成之后保存重启服务器即可。

错误2:The resource manager is doing work outside a global transaction

com.mysql.jdbc.jdbc2.optional.MysqlXAException: XAER_OUTSIDE: Some work is done outside global transaction

原因:造成这个问题的原因往往是mysql的驱动版本太低造成的,我们需要在网上下载更高版本的mysql驱动即可,在Glassfish5里我使用的是mysql-connector-java-5.1.14,能够正常工作。

最后

Glassfish里还有很多值得探索的功能,想要了解详情的话大家可以去Glassfish的官网查看官方的文档。此外,本人才疏学浅,如有错误还请见谅及纠正。

最新文章

  1. java基础--java.util.Date类型小结
  2. [LeetCode]436 Find Right Interval
  3. SolrCloud的官方配置方式
  4. 基于Lumisoft.NET组件的POP3邮件接收和删除操作(转载)
  5. java System.out
  6. SyncServer obj
  7. Ubuntu14.04搭建LAMP环境
  8. 高性能js之js加载执行
  9. Linux(SLES)挂载NTFS移动硬盘实践
  10. Android项目svn代码管理问题
  11. Servlet源码初探
  12. Caused by: java.sql.SQLException: Field &#39;id&#39; doesn&#39;t have a default value
  13. 如何使用Matlab产生对称矩阵
  14. JavaSE面试题收集【仅有题目,答案自备】
  15. Python-GIL 进程池 线程池
  16. hdu 5051 找规律?+大trick
  17. 使用代数方程库 Algebra.js解二元一次方程
  18. 【转载】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  19. gulp的使用以及Gulp新手入门教程
  20. nodejs真的是单线程吗?

热门文章

  1. MySQL java连接被拒绝:java.sql.SQLException: Access denied for user &#39;root&#39;@&#39;****&#39; (using password: YES)
  2. Linux 利用管道父子进程间传递数据
  3. AttributeError: module &#39;matplotlib&#39; has no attribute &#39;verbose&#39; (pycharm中使用matplotlib 2.2.0的坑)
  4. ExtJS Ext.Ajax.request最好设为同步
  5. 使用Entity Framework时遇到的各种问题总结
  6. angular custom Element 自定义web component
  7. mysql 修改编码格式
  8. activity启动模式之singleTop
  9. yii2:不使用composer安装yii2-jui的方法
  10. 5.8 页面对象(Page Object)模式