Não é possível iniciar o servidor Glassfish no CentOS 5: a porta está supostamente em uso, mas não é realmente

1

Eu tenho um servidor do CentOS 5 no qual planejo experimentar o Glassfish. O servidor está em funcionamento, posso ssh para ele e ter acesso root.

Então eu instalei o Glassfish: eu segui este link no site Oracle GlassFish Downloads e baixado o instalador arquivo java_ee_sdk-6u4-jdk-linux-x64.sh . Então, eu ssh -X ao servidor como root , executei o arquivo do instalador, escolhi Instalação Típica e deixei praticamente todas as opções em seu padrão, exceto pelo diretório de instalação que defini como /opt/glassfish .

A própria instalação funcionou bem, exceto que falhou ao iniciar o domínio após a instalação bem-sucedida . Isso me deu a mesma mensagem de erro de quando eu agora tento iniciar manualmente o domínio:

# /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.

No entanto, não há processo em execução na porta 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

Do meu próprio PC:

# 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

Só para ter certeza, eu desinstalei o Glassfish completamente, purgando /opt/glassfish , e então reinstalei, mas dessa vez eu configurei a porta do admin para ser 12345 . Mesmo resultado, está me dizendo que já existe um programa em execução na porta 12345 . Exceto não há. Em nenhum momento eu poderia alcançar http://my-experimentation-server:4848 , resp. http://my-experimentation-server:12345 .

Alguma sugestão?

Atualização:

  1. Iniciar um servidor Apache no my-experimentation-server na porta 80 funciona fine , e eu posso acessar o servidor pelo meu próprio PC.

  2. No meu servidor de experimentação, emiti o comando nc -l 4848 , que abre um soquete TCP no modo listenting na porta 4848. Isso funciona! Do meu próprio PC, posso usar nc my-experimentation-server 4848 para transferir mensagens entre os dois computadores. Portanto, a porta 4848 não é bloqueada por outro processo ou filtrada por um firewall ou qualquer outra coisa. Este é definitivamente um problema Glassfish.

por Malte Skoruppa 13.01.2014 / 13:27

2 respostas

2

Eu finalmente resolvi o problema, e estou postando a solução aqui na esperança de que algum dia, em algum lugar, ajude alguém.

O problema era que o nome do host configurado dentro do sistema operacional não correspondia ao nome do host real como era conhecido do servidor DNS da empresa, mas correspondia ao nome do host de algum outro servidor.

Mais precisamente, no servidor CentOS em que eu estava tentando iniciar o Glassfish, o comando hostname seria emitido (o nome do domínio era alterado):

# hostname
mbpc05.my-domain.com

No entanto, mbpc05.my-domain.com é outro servidor completamente diferente dentro de nossa empresa.

O nome do host real do meu servidor CentOS, como é conhecido pelo servidor DNS em nossa empresa, era mbpc09.my-domain.com (ou seja, 9 , não 5 !).

Então, eu enviei o seguinte comando (como root ) no meu servidor CentOS para alterar o nome do host:

# hostname mbpc09.my-domain.com

Isso resolveu isso. Depois, eu poderia iniciar o servidor Glassfish sem problemas.

Presumo que o que aconteceu foi que o servidor Glassfish recuperou o nome do host local do sistema operacional e tentou iniciar um servidor nesse host - mas como esse nome de host pertencia a um servidor totalmente diferente, ele tentava iniciar um Glassfish instância do servidor em um servidor remoto, ou algo parecido. Isso obviamente falhou. A saída de mensagem de erro do Glassfish foi muito confusa e não teve nada a ver com o problema real (espero que alguma exceção tenha sido lançada no código Java que produziu essa mensagem - o tratamento de erros poderia ser mais preciso), e é por isso que me levou algum tempo para resolvê-lo. :)

    
por 14.01.2014 / 16:46
-1

Muito obrigado. Demora muito tempo para entender o que está acontecendo. Eu tentei configurar o ambiente local no meu pc mac local, mas recebendo o mesmo erro.

** Eu mudei da seguinte forma ... **

// Passo 1: Verificado o nome do host atual

$ hostname

P39930

// Etapa 2: Altere o nome do host como localhost

$ hostname localhost

// Etapa 3: Verifique as alterações

$ hostname

localhost

// Passo 4: Agora eu iniciei meu servidor de peixe de vidro

$ asadmin start-domain domain1 Porta de administração: 4848 Comando start-domain executado com sucesso.

... funcionou perfeitamente ....

    
por 05.01.2018 / 02:42

Tags