glassfish 初次使用 (介绍・目录结构・注意点・基本命令・控制台・eclipse插件安装)

    技术2024-10-19  22

    ■前言

      ・初次接触glassfish,之前接触过 tomact(Apache),websphere(IBM)

     

    ■glassfish简介

      ・sun公司推测的一款web服务器,当然,现在已经是Oracle的了。

     

    ■glassfish常用命令

    /glassfish4/glassfish/bin/ asadmin start-domain domain2 asadmin list-domains -l asadmin stop-domain domain2

     

    【坑】

                   虽然,使用 「asadmin start-domain domain2」之后,显示正常执行了,

                   但是,使用 「asadmin list-domains -l」命令时,显示 domain2 is not running // 加上 -l 可以显示详细信息

                   这时,访问domain2中的APP,显示404,sever.log中有ERROR情报

                   其实,这个时候,glassfish的domain2并没有成功启动,

                   解决方法,重新「asadmin start-domain domain2」启动,多试几次,可以成功启动。

    当端口被占用时,使用如下命令查找进程,并强制关闭 netstat -ano | find "4849" taskkill /pid XXXX /F

     

    ■Linux操作时,注意点

    ======

    1.启动的用户,一般不使用root用户启动

      通常使用glassfish自己的用户来启动。

     (使用root用户启动之后,一些文件会的所有中会变成root,

          比如:

         ・domains/domain/config/domain.xml

         ・applications下 war解压生成的目录,也是root权限

       要把这些用户的权限改回来,才能再次 使用 glassfish 用户正常启动)

    2.注意查看log信息

      比如出现500,直接查看server.log

    3.数据库的连接配置是否正确

         比如连接的 数据库 的 服务器,是否是当前环境的服务

    4.是否有有已经写好的脚本

         通过 root 用户,直接调用脚本,来实现glassfish的启动・停止操作。

         // root 脚本中 sudo - glassfish

    5.http Code

    404:服务器无法找到对应资源 // 部署后的文件夹权限有问题时,会造成此问题

    500:服务器内部错误 //  比如【数据库 不对 ; 或者数据密码不对】时,就会出现此问题 501:服务器不支持请求的函数 502:服务器暂时不可用,有时是为了防止发生系统过载503:服务器正忙(web服务器不能处理HTTP请求,可能是临时超载或者是服务器进行维护) // domainN停止时

    ======

     

    ■目录结构

    glassfish4

    └glassfish

         └bin

               └asadmi

         └domains

                └domain1

                         └applications

                                 └__internal

                                         └ProjectName

                                                  └ProjectName.war

                                └ProjectName

                                         └ProjectName_war

                                                  └WEB-INF

                                                          └classes

                                                                    └リソース

                                                          └lib

                                         └ProjectName.war

                         └autodeploy

                                └ProjectName.war  // 要发布的war,放到这个位置

                                └ProjectName.war_deployed  // 发布成功之后,会生成一个 【0】 size 的文件

                         └Logs

                                └server.log

                                       ↑ 启动之后,如果有500的错误,在这里查看!

                         └config

                                └ admin-keyfile

             ↑管理员用户和密码 (密码保存的内容是,密码的HASH值)

                                └ domain.xml

                                             ↑端口号等情报设定

                                                   domain2 一般默认为

                                                              8180 工程

                                                              4948   管理员

                                                 search (key-word) :network-listener、port

                └domain2

                └domainN

     

    ■注意点(命令行启动)

    1.  使用「asadmin start-domain domain1」命令之前,确保环境变量path中,配置了jdk的bin

    2.解压缩后,即可直接使用,但是目录里面不能带有中文。

    3.目录不要过长,否则某些文件会因为路径过长,从而解压缩失败,从而在服务器启动时造成各种问题。

        (建以直接在C盘根目录下解压)

    以下内容与项目实际有关,仅供参考

    ーーー

    4.把服务器上运行的glassfish的内容直接压缩后,取到本地。(其他同事已经对应了。)

    5.本次使用的安装包时,XXXXXX.tar.gz,看似是Linux下使用的东西,

         在win10的C盘下解压后,可以正常使用。

          (解压后的bin文件夹中,有bat文件,说明windows 系统 应该可以使用)

    6.解压后自带的 domain1 可以正常使用

    ーーー

    7.不能删除Domain1 !!!

                   ( 目录结构的 applications 中是有内容的,比如 重要的控制台,

                        出现:ThemeConfigurationException 异常

                   这里面的内容,应该就是异常信息中所说的: 「主题 theme

        ----------------

      如果删除 domain1后,手动使用命令「asadmin create-domain domain1」建立domain1,

         这种做法,虽然可以成功建立domain1,

         使用 「asadmin start-domain domain1」命令行中,也能正常显示启动,

         但是从网页「localhost:8484」进入控制台时,会是一直等待的状态,

          从log中可以看到,说没有  「主题 theme

        ----------------

    8.使用管理者权限启动命令行后,再在命令行中执行命令

        ----------------

       不使用管理者会有奇怪的问题发生,// 参照最上面【坑】相关的记述 

                比如,

                   虽然,使用 「asadmin start-domain domain2」,可以正常启动,

                   但是,使用 「asadmin list-domains -l」命令时,显示 domain2 is not running // 加上 -l 可以显示详细信息

                               使用 「asadmin stop-domain domain2」无法停止domain2,说domain2没有启动,    

       // 不使用管理员,也可以成功启动,但是有概率问题,不是每次都百分之百成功启动 !!!// 参照最上面【坑】相关的记述 

        ----------------

     

    ■注意点(Eclipse中,glassfish插件行启动)

    0.【参考】对象工程,外面再包一层EJB

            【新規】

          ⇒【その他】

          ⇒【Java EE】

                                 ⇒【エンタープライズ・アプリケーション・プロジェクト】

                (enterprise・Application・project)

    1.本地数据库服务是否启动

             (如果有多个数据库(比如 mysql1,mysql2),启动对象数据库是否正确)

    2.在eclipse中,

               移除 GlassFish服务器中的工程

    3.clean工程

    4.删除「domains\domainX\applications\」中已经发布的内容

     5.在eclipse中,

                GlassFish服务器中,添加要发布的工程

     6.启动 GlassFish

    7.【参考】GlassFish Server设定:自動公開しない  (不自动公开)

    8.【参考】GlassFish Server设定:time out 时间 :800秒

     

    ■相关命令

    1.「asadmin start-domain domain2」 管理员端口号 4848

    2.「asadmin stop-domain domain2」 管理员端口号 4948、运行web程序,是其他的端口号 (8180)

    3.「asadmin list-domains domain2」

                 可以查看每个domain的启动状况。

                ==========

                   domain1 not runing

                   domain2 running    // 注意,要使用admin在本地启动命令行,执行命令

                                                 // 否则,即使成功启动,这里还是显示not running

                                                       // 同时,http:localhost:4849 也无法正常进入,

                                                                要么是一直等待,要么是出http 500的错误

                                                // 对应的端口也被一直占用(netstat -ano | find "4849")

                                                // (taskkill /f /pid XXXX)

                   domain3 not runing

                ==========

    ---

     

    ■进入控制台

     localhost:4848

        「asadmin start-domain domain1」命令之后,会告诉你控制台的端口号,

           不同的domain端口号是不相同的。

     

    ■发布并运行web服务(加载war)

    前言,在eclipse中的操作,有管理者权限,正常启动eclipse即可

       安装相应的插件

          ・glassfish的插件:Eclipse GlassFish Tools

                  ・插件下载

                           https://download.eclipse.org/glassfish-tools/1.0.0/?d

            https://download.eclipse.org/glassfish-tools/1.0.1/

                    ・安装

                           https://blog.csdn.net/sxzlc/article/details/107580888

       ・sapphire的插件: Sapphire XML Editor Support  //应该没有用,不安装也许能运行

       【help】 ⇒ 【新規ソフトウェアのインストール】 ⇒【追加】

       出来的对话框中,「位置」中,选择本地插件zip的保存路径,然后安装

     

    方法1:

      在控制台中进行操作。

         注意: 端口号与控制台的端口号是不相同的。

                     这一点与tomcat不同,但是与 websphere类似

    === 控制台界面 start

    Domain

    Server(Admin Server)

    。。。

    Nodes

    Applications  ⇒ 选择web工程 (checkbox),点击「Deploy」

    Licecycle Modules

    。。。

    ===控制台界面 end

    方法2:

     

    ■数据源配置

     

    待续。。。

     

    ■课题解决

    cannot Deploy [YourProjectName]

    [YourProjectName] is not deployed

    Step1.

    外面再包一层  (tomcat不用,websphere也要包一层)

      【新規】

       ⇒【その他】

          ⇒【Java EE】

                                 ⇒【エンタープライズ・アプリケーション・プロジェクト】

                (enterprise・Application・project)

    Step2.

    https://www.it1352.com/661776.html

    通过以下方式找到使用JAR归档进行部署: 右键单击eclipse服务器选项卡上的glassfish。然后,在新窗口中选择监控> 属性> Glassfish > 使用JAR存档进行部署。

    即:Use JAR archiives for deployment(J)

    (这里有两个复选框,上面的,复选框,也选中

         最デプロイメントにまたがリセッションを保持(V)

     

    Step3.

    修改deploy的具体设置

         右键点击工程

             ⇒デプロイメント・アセンブリ

      只发布你想要发布的内容

     

    step4.

        修改glashfish的启动时间,修改到500秒左右。

     

    step5.

      确保 对应的端口已经关闭

      比如domain2是 4948 端口

       查看端口 netstat -ano | find "4948"

      并得到pid,通过pid关闭进程

      (taskkill /f /pid XXXX)

     

    step6.

    删除 glassfish 发布目录下面的 内容

        domain2

        └applications

               └__internal   //存放war包的目录

                       └XXXWeb  // (step1 中建立工程的名字)

                             └XXXTknWeb.ear

               └XXXXWeb  // (step1 中建立工程的名字)

                    └TTTTWeb_war // 工程的名字

                    └TTTTWeb.war // 工程的名字    

                          └WEB-INF

                                └ classes  //根据 上述step3中的配置发布

              └lib        //根据 上述step3中的配置发布,是maven关联的jar包

     

    ---

    step7.IE中,运行程序

    http://localhost:8180/TTTTWeb          // 工程的名字

    但是,通过

    http://localhost:4849   

    进入glassfish管理者画面时,报500的错误

    ---

     

     

     

         

    Processed: 0.010, SQL: 9