Centos

無法在 CentOS 5 上啟動 Glassfish 伺服器:埠據說正在使用中,但實際上並沒有

  • April 18, 2019

我有一個 CentOS 5 伺服器,我打算在上面試驗 Glassfish。伺服器已啟動並正在執行,我可以通過 ssh 訪問它並擁有 root 訪問權限。

所以我安裝了 Glassfish:我點擊了Oracle GlassFish 下載站點上的這個連結並下載了安裝程序文件。然後我以 . 身份登錄到伺服器,執行安裝程序文件,選擇典型安裝,並將幾乎所有選項都保留為預設值,除了我設置為的安裝目錄。java_ee_sdk-6u4-jdk-linux-x64.sh``ssh -X``root``/opt/glassfish

安裝本身執行良好,只是安裝成功後無法啟動域。它給了我與我現在嘗試手動啟動域時相同的錯誤消息:

# /opt/glassfish/bin/asadmin start-domain
There is a process already using the admin port 4848 -- it probably is another instance of a GlassFish server.
Command start-domain failed.
# /opt/glassfish/bin/asadmin restart-domain
Server is not running, will attempt to start it...
There is a process already using the admin port 4848 -- it probably is another instance of a GlassFish server.
Command restart-domain failed.

但是,埠 4848 上沒有執行任何程序

# netstat -tulpn | grep 4848
# /sbin/fuser 4848/tcp
# /usr/sbin/lsof -i :4848
# grep 4848 /etc/services 
appserv-http    4848/tcp                        # App Server - Admin HTTP
appserv-http    4848/udp                        # App Server - Admin HTTP

從我自己的電腦:

# nmap -P0 my-experimentation-server

Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-13 12:37 CET
Nmap scan report for mbpc09.cs.uni-saarland.de (134.96.225.191)
Host is up (0.018s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
631/tcp  closed ipp
2222/tcp closed EtherNet/IP-1

Nmap done: 1 IP address (1 host up) scanned in 11.84 seconds

可以肯定的是,我完全解除安裝了 Glassfish,清除了/opt/glassfish,然後重新安裝了它,但這次我將管理埠配置為12345. 結果相同,它告訴我已經有一個程序在 port 上執行12345。除了沒有。在任何時候我都無法到達http://my-experimentation-server:4848,resp。http://my-experimentation-server:12345.

有什麼建議麼?

更新:

  1. 在埠 80 上的 my-experimentation-server 上啟動 Apache 伺服器工作正常,我可以從自己的 PC 訪問伺服器。
  2. 在我的實驗伺服器上,我發出了nc -l 4848在埠 4848 上以偵聽模式打開 TCP 套接字的命令。這行得通!然後,我可以在我自己的 PC 上使用nc my-experimentation-server 4848它在兩台電腦之間來回傳輸消息。因此,埠4848不會被另一個程序阻止,也不會被防火牆過濾,或者其他什麼。這絕對是一個 Glassfish 問題。

我終於解決了這個問題。

問題是作業系統中配置的主機名與我們公司的 DNS 伺服器已知的實際主機名不匹配,而是與其他一些伺服器的主機名匹配。

更準確地說,在我試圖啟動 Glassfish 的 CentOS 伺服器上,該命令hostname將輸出(域名已更改):

# hostname
mbpc05.my-domain.com

但是,mbpc05.my-domain.com它是我們公司內另一台完全不同的伺服器。

我們公司的 DNS 伺服器知道我的 CentOS 伺服器的實際主機名是mbpc09.my-domain.com(即9,不是5!)。

所以,我在我的 CentOS 伺服器上發出了以下命令(as root)來更改主機名:

# hostname mbpc09.my-domain.com

那解決了它。之後,我可以毫無問題地啟動 Glassfish 伺服器。

我假設發生的事情是 Glassfish 伺服器從作業系統中檢索了本地主機名,然後嘗試在該主機上啟動伺服器 - 但由於該主機名屬於完全不同的伺服器,它會嘗試啟動 Glassfish 伺服器實例遠端伺服器,或類似的東西。這當然失敗了。Glassfish 輸出的錯誤消息非常令人困惑,與實際問題無關(我預計 Java 程式碼中會引發一些異常,然後輸出該消息 - 錯誤處理可能更準確),這就是為什麼我花了一些時間來解決它。:)

引用自:https://unix.stackexchange.com/questions/109133