Esta seção descreve os problemas conhecidos no Sun GlassFish Enterprise Server v3 e as soluções se disponíveis.
[Problema _JDK] Exceção de ponteiro nulo na reinicialização do servidor (Problema 8299)
[Problema_JDK] Exceção de ES: argumento inválido durante o teste de longevidade (Problema 7529)
[Problema _JDK] Exceção de ponteiro nulo EPoll na inicialização (Problema 9472)
[Problema_JDK] Richaccess: java.io.IOException: argumento inválido do doSelect (Problema 8573)
O arquivo de registro da instalação do Windows não é legível (Problema 4881)
Ocorrem problemas com a distribuição ZIP se o UAC está ativado no Windows Vista (Problema 10755)
Ocorrência de exceção de ponteiro nulo do com.sun.xml.wss.NonceManager.getInstance (Problema 11138)
A Ferramenta de Atualização Independente falha com falha de segmentação no Solaris (Problema 11222)
O comando updatetool não funciona se você reinstala no mesmo diretório no Windows (Problema 8233)
[EclipseLink] Problemas comElementCollections de incorporáveis (Problema do EclipseLink 296606)
EJB interop para EJBs remotos quebrados quando o EJB de destino está no mesmo host (Problema 11152)
O instalador pára em 41% de forma intermitente no Windows Vista e no Windows 7 (Problema 11185)
Não é possível enviar mensagens JMS entre os sistemas (Problema 11254)
Problema de configuração do EJB Timer Service do MySQL (Problema 11428)
O subcomando deploy falha no servidor seguro (Problema 11439)
Certificado expirado no armazenamento de confiança do Enterprise Server (Problema 6852796)
Quando o método setSoLinger ou o método setReuseAddess é chamado, do desempenho é degradado e a seguinte exceção ocorre:
[#|2009-01-26T00:33:56.325-0800|WARNING|sun-appserver9.1| javax.enterprise.system.container.web|_ThreadID=17; _ThreadName=SelectorReaderThread-8084; _RequestID=11ae0030-c392-4217-8408-cfa7efe0a879;|setSoLinger exception java.net.SocketException: Invalid argument |
Este problema é causado por um problema com o software JDK. Este problema está solucionado na versão 7 do JDK.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
A Reinicialização do Enterprise Server algumas vezes causa uma ocorrência de ponteiro nulo.
SEVERE: doSelect exception java.lang.NullPointerException |
Este problema é causado por um problema com o software JDK. Este problema está solucionado na versão 7 do JDK.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
Durante um teste de longevidade do HTTP, ocorre a seguinte exceção ao ser alcançado 42 horas de execução.
[#|2009-04-05T17:41:26.537-0700|SEVERE|glassfish|javax.enterprise.system.core| _ThreadID=15;_ThreadName=Thread-1;|doSelect exception java.io.IOException: Invalid argument |
A instância e o aplicativo ainda são acessíveis durante a execução.
Este problema é causado por um problema com o software JDK. Este problema está solucionado na versão 7 do JDK.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
Na inicialização, Enterprise Server ocorre uma exceção de ponteiro nulo:
java.lang.NullPointerException at sun.nio.ch.Util.atBugLevel(Util.java:326) at sun.nio.ch.SelectorImpl.<init>(SelectorImpl.java:40) at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:47) |
Isso se refere ao Grizzly e é um problema do JDK 6. Este problema está solucionado na versão 7 do JDK.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma. O Grizzly tenta solucionar este problema mas ainda pode falhar.
A seguinte exceção é vista:
[#|2009-06-20T06:05:57.942-0700|SEVERE|glassfish| com.sun.grizzly.config.GrizzlyServiceListener| _ThreadID=21;_ThreadName=Thread-2;|doSelect IOException java.io.IOException: Invalid argument |
Este é um problema do JDK, programado para ser solucionado no JDK 1.6.0_18.
Para obter mais informações, consulte o Relatório do problema.
Aumente o número máximo de descritores de arquivo para 10.000 ou mais (o padrão no Solaris é 64.000). Quando JDK 1.6.0_18 se tornar disponível, instale o mesmo.
Se o diretório /applications do domínio restringe o acesso, ou se você usa a implementação do diretório a partir de um diretório restringido, o servidor não pode ler os arquivos no diretório expandido. Um erro NullProcessException ocorre durante a implementação.
Para obter mais informações, consulte o Relatório do problema.
Altere as configurações de acesso para tais diretórios, para conceder permissões ao servidor para ler o conteúdo do diretório.
O arquivo time-stamp-install.log não pode ser lido porque todas as linhas escritas no arquivo estão concatenadas em uma única sequência longa.
Para obter mais informações, consulte o Relatório do problema.
Use outro editor ou abra manualmente o arquivo de registro da instalação criado no diretório %TEMP%.
As estatísticas de monitoramento sobre os servidores virtuais recém adicionados somente estão disponíveis após a reinicialização do servidor.
Para obter mais informações, consulte todos os relatórios para o Problema 6238 e Problema 6422.
Após adicionar um servidor virtual, reinicie o servidor para visualizar os dados de monitoramento para o servidor virtual.
A opção -l para realocar arquivos de registro é ignorada quando usada com as opções -a e -s e os arquivos de registro são criados na localização padrão.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
Alguns recursos não funcionarão bem no Windows Vista com o User Account Control (UAC) ativado. Um exemplo é o Console de Administração, que não pode ser iniciado.
Para obter mais informações, consulte o Relatório do problema.
Desative o UAC e reinicialize.
O teste do serviço Web JAX-RPC, com o provedor de segurança de mensagem do GlassFish ativado, tem a seguinte ocorrência nos registros do servidor:
[#|2009-11-23T11:16:58.375+0005|SEVERE|glassfishv3.0| javax.enterprise.resource.webservices.rpc.server.http|_ThreadID=25;_ ThreadName=http-thread-pool-8080-(2);|caught throwable java.lang.RuntimeException: com.sun.enterprise.security.jauth.AuthException |
O valor padrão da propriedade nonce não funciona.
Para obter mais informações, consulte o Relatório do problema.
Para usar a segurança de mensagem com os serviços Web JAX-RPC, desative a propriedade nonce na configuração. Consulte o Relatório do problema para obter as etapas completas para a solução.
O grupo de menus Iniciar para o Enterprise Server não é exibido após a instalação é completada pela primeira vez. Se você se desconecta e volta a se conectar, o grupo de menus é exibido mas está vazio.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
O comando asadmin get -m "server.*" retorna todos os dados de monitoramento pertencentes a aquele servidor. Quando muitos aplicativos estão implementados, o montante de dados é bastante grande e poderia levar muito tempo para serem retornados. O cliente pode expirar com o seguinte erro no lado do servidor:
./asadmin get --monitor=true "server.*" I/O Error: Read timed out Command get failed. |
Para obter mais informações, consulte o Relatório do problema.
Minimize o montante de dados que são retornados para o cliente.
Execute o comando asadmin list -m "server.*" , que retorna os elementos do nível superior.
Selecione o elemento do nível superior para o qual os detalhes são necessários, e use isso como um filtro. Por exemplo:
> ./asadmin list -m "server.*" ... server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-cache server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods. create-int-int-[Lorg\.spec\.jappserver\.supplier\.helper\.ComponentOrder server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods. findByPrimaryKey-java\.lang\.Integer server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.generateXml server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.getEJBLocalHome ... >./asadmin get -m "server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.*" ... server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove. methodstatistic-name = MethodStatistic server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove. methodstatistic-starttime = 1259604209775 ... |
A Ferramenta de Atualização Independente iniciada com o comando updatetool falha com uma falha de segmentação no Solaris ao instalar componentes adicionais.
Para obter mais informações, consulte o Relatório do problema.
Assegure que seu sistema esteja em conformidade com os requisitos de correção da Ferramenta de Atualização Independente, como definido nas Notas de Versão do Centro de Atualização.
A funcionalidade da Ferramenta de Atualização no Console de Administração usa uma API diferente do Centro de Atualização com base no Java e não é afetada por este problema.
Se um aplicativo Ruby é implementado no contextroot '/' e o Console de Administração é então acessado, o acesso ao aplicativo Ruby produz um erro 404.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
Ao usar o Java Web Start para iniciar um aplicativo cliente, quaisquer beans gerenciados no aplicativo cliente não serão reconhecidos.
Para obter mais informações, consulte o Relatório do problema.
Inicie o aplicativo cliente usando o script appclient. Os beans gerenciados no aplicativo cliente serão normalmente suportados.
Quando você chama o script appclient nos sistemas Mac OS X com O Java da Apple instalado, o seguinte rastreamento de pilha é visto duas vezes (somente apenas algumas primeiras linhas são aqui mostradas):
Intentionally suppressing recursive invocation exception! java.lang.IllegalStateException: recursive invocation at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1394) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377) at sun.security.jca.ProviderConfig$1.run(ProviderConfig.java:64) ... |
Para obter mais informações, consulte o Relatório do problema.
Nenhuma necessária.
A despeito das mensagens de alerta, o cliente será iniciado com êxito e será normalmente executado. Estes erros são um problema na implementação do Apple Java.
Ocorre um problema quando todos os seguintes são verdadeiros:
O aplicativo é um EAR que contém um cliente app.
O EAR é implementado no diretório.
O EAR contém um módulo de aplicativo cliente myAppClient.jar , que, por ser uma implementação de diretório, é pré-expandida no myAppClient_jar. (Para o propósito deste exemplo, myApp é o nome do EAR. Este nome pode ser qualquer um).
As tentativas em iniciar o aplicativo cliente irá falhar com o seguinte erro porque um arquivo gerado no servidor é colocado no diretório errado do servidor e sobrescreve outro arquivo gerado:
java.lang.ClassNotFoundException:(main-class-for-the-client) |
Para obter mais informações, consulte o Relatório do problema.
Altere o nome do aplicativo cliente para que não seja myAppClient.jar . Especificamente:
Edite o myApp/META-INF/application.xml para que a declaração do cliente seja <java>myClient.jar</java>. Observe que você pode usar qualquer outro nome que não seja myAppClient.jar.
Renomeie o diretório myApp/myAppClient_jar para myApp/myClient_jar. Observe que o nome do subdiretório do cliente precisa ser o mesmo do URI do aplicativo cliente no arquivo application.xml , com o .jar substituído por _jar.
Implemente o aplicativo:
asadmin deploy --retrieve localdir myApp |
Execute o aplicativo cliente:
appclient -client localdir/myAppClient.jar |
As alterações nos valores do registro do servidor na aba geral da página Configurações do conector no Console de Administração não têm efeito imediato.
Para obter mais informações, consulte o Relatório do problema.
Reinicie o servidor. Todas as alterações nesta página requerem a reinicialização do servidor para terem efeito.
Os arquivos de registro da instalação não podem ser abertos ao clicar nos links da página Resumo, que é exibida no fim do processo de instalação no instalador gráfico.
Para obter mais informações, consulte o Relatório do problema.
Acesse manualmente os arquivos. Os nomes dos arquivos de registro da instalação e do resumo são timestamp-install.log and timestamp-install-summary.html. Nos sistemas Linux e Mac estes arquivos são gerados no diretório $TMP.
Se você reinstala o Enterprise Server (com a Ferramenta de Atualização) no mesmo diretório de instalação com os mesmos padrões e chama a Ferramenta de Atualização usando o comando updatetool , recebe uma mensagem afirmando que a Ferramenta de Atualização não está instalada e se deseja instalar a mesma. Isso somente ocorre em sistemas Windows.
Para obter mais informações, consulte o Relatório do problema.
Após a desinstalação, remova manualmente o diretório .org* antes de reinstalar.
Esse problema ocorre intermitentemente somente nos sistemas Windows e Mac OS. O pkg(5) não funciona em determinados sistema em determinadas vezes.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
A ajuda on-line e a página principal CLI lista a versão 2.4 incorreta do servlet em X-Powered-By (Problema) A versão correta é o servlet 3.0.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
Ao usar incorporado com o glassfish-embedded-all-3.0-b73.jar, a implementação falha com o seguinte erro:
SEVERE: WEB9051: Error trying to scan the classes at /private/var/folders/CV/CVhj8DvqEwGK5bdJKK9TaE TI/-Tmp- /gfembed6991712842235699248tmp/applications/xwiki-enterprise-web-2.0/ WEB-INF/lib/activation-1.1.jar for annotations in which a ServletContainerInitializer has expressed interest java.util.zip.ZipException: error in opening zip file |
Isso ocorre porque o incorporado usa uma pasta com sinal de mais (+), e os sinais de mais em um caminho são convertidos em caracteres de espaço " " quando o caminho é decodificado.
Para obter mais informações, consulte o Relatório do problema.
Uma propriedade do sistema foi então adicionada que permite você colocar diretórios temporários. A propriedade é glassfish.embedded.tmpdir e também pode definir para ser o diretório do domínio temporário e não é colocado no diretório do usuário.
O create-service falha na criação do serviço sem o AS_ADMIN_USER em um passwordfile no Solaris.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
O Enterprise Server usa uma estrutura em árvore para rastrear objetos monitoráveis. Dentro daquela árvore, a seguinte visualização não está disponível para obter as estatísticas do conjunto de conexões:
server.connector-service.resource-adapter-name .connection-pool-name .* ou server.jms-service.connection-factories. connection-factory-name.* (para jms-ra-relativos aos conjuntos).
Para obter mais informações, consulte o Relatório do problema.
Use a visualização server.resources.* para obter as estatísticas.
Para obter uma descrição sobre o monitoramento, consulte o Capítulo 8, Administering the Monitoring Service, no Sun GlassFish Enterprise Server v3 Administration Guide.
Com a weaving ativado, as atualizações de uma coleção de elementos de incorporáveis pode ser potencialmente causar a ocorrência de uma exceção de ponteiro nulo.
Para obter mais informações, consulte o Relatório do problema.
Duas soluções estão disponíveis:
Adicione a anotação @ChangeTracking(DEFFERED) no incorporável e defina a propriedade eclipselink.weaving.internal como false, ou
Defina as seguintes propriedades como false no XML de persistência: eclipselink.weaving.changetracking e eclipselink.weaving.internal.
Após iniciar o domínio e acessar o localhost:4848, as seguintes mensagens são vistas no registro do servidor:
[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0| javax.enterprise.system.container.web.com.sun.enterprise.web| _ThreadID=20;_ThreadName=Thread-1;|Created virtual server server|#] |
[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0| javax.enterprise.system.container.web.com.sun.enterprise.web| _ThreadID=20;_ThreadName=Thread-20;|Created virtual server server|#] |
Estas mensagens dão a impressão que o servidor virtual, server , foi iniciado duas vezes. Este não é o caso. Os servidores virtuais somente são iniciados uma vez, mas as mensagens são registradas múltiplas vezes.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
O depuração do JPA é difícil devido as mensagens limitadas do servidor.
Para obter mais informações, consulte o Relatório do problema.
Adicione a propriedade org.eclipse.persistence.session.level=INFO no arquivo logging.properties. Você pode então usar o Console de Administração para controlar os registradores do EclipseLink.
EJB interop para EJBs remotos quebrados quando o EJB de destino está no mesmo host (outro domínio do Enterprise Server ou outra instância do Enterprise Server v3).
Para obter mais informações, consulte o Relatório do problema.
Defina a seguinte propriedade no jvm-options:
-Dorg.glassfish.orb.iiop.orbserverid=:
O instalador pára em 41% de forma intermitente no Windows Vista e no Windows 7. Isso não acontece com cada tentativa de instalação.
Para obter mais informações, consulte o Relatório do problema.
Essa questão é relacionada com o recurso de auto-ajuste no Windows Vista e Windows 7, que é ativado por padrão.
Se você tiver paradas ao instalar o Enterprise Server inicialmente, ou ao adicionar pacotes ou ao aplicar atualizações, restrinja ou desative o recurso de auto-ajuste.
Por padrão, o nome do host padrão para o serviço JMS no Enterprise Server é localhost. Para a acessar o serviço JMS a partir de outro sistema, é preciso alterar o nome do host. Você pode alterá-lo para o nome do host atual ou para 0.0.0.0.
Para obter mais informações, consulte o Relatório do problema.
Para fazer a alteração, faça um dos seguintes:
Use os nós Console de Administração: Expandir a configuração, Java Message Service e JMS Hosts, e selecione default_JMS_host, e edite o campo Host, ou
Use um subcomando asadmin como o seguinte:
asadmin set server-config.jms-service.jms-host.default_JMS_host.host="0.0.0.0" , ou
asadmin set server-config.jms-service.jms-host.default_JMS_host.host="hostname"
Quando o Enterprise Server é instalado usando o instalador gráfico, a instalação é completada com êxito, mas somente a entrada de nível superior do GlassFish v3 é adicionada no menu do sistema Windows, e está vazia. Esse problema ocorre com os instaladores localizados e em Inglês.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
O mysql não está na lista de banco de dados suportados em --dbvendorname na página principal do comando deploy. Isso é um erro. O MySQL é um banco de dados suportado e deveria estar na lista.
Para obter mais informações, consulte o Relatório do problema.
Nenhuma.
O ACC espera que o carregador de classe de contexto do segmento atual seja um ACCClassLoader. Isso é extremamente restritivo. Embora está condição se dê no script appclient e nas inicializações do Java Web Start, isso não poderia ocorrer nos casos incorporados. Outras funções dentro do ACC requerem que o carregador de classe seja um URLClassLoader (ou uma instância de uma subclasse de URLClassLoader), mas o carregador não precisa ser um ACCClassLoader.
Para obter mais informações, consulte o Relatório do problema.
Duas soluções estão disponíveis:
Defina -Djava.system.class.loader=org.glassfish.appclient.client.acc.ACCClassLoader ou
No seu programa Java, crie instâncias de um ACCClassLoader e defina-o para que seja o carreador de classe de contexto do segmento atual usando Thread.currentThread().setContextClassLoader antes de usar as interfaces e classes ACC incorporadas.
É possível criar e armazenar o timer EJB no MySQL como usuário, mas ao tentar configurar o EJB Timer Service para MySQL, ocorre a seguinte exceção (instrução de execução SQLException):
"CREATE TABLE EJB__TIMER__TBL (TIMERID VARCHAR(255) NOT NULL, BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE VARCHAR(255), INTERVALDURATION BIGINT, OWNERID VARCHAR(255), STATE INTEGER, LASTEXPIRATIONRAW BIGINT, PKHASHCODE INTEGER, CREATIONTIMERAW BIGINT, CONTAINERID BIGINT, PRIMARY KEY (TIMERID))": com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE VARCHAR(255), INTERVALDU' at line 1|#] |
Para obter mais informações, consulte o Relatório do problema.
Certifique-se de que o datasource-classname especificado para o conjuntos de timer represente um XA DataSource.
Etapas específicas do MySQL:
Descompacte glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war .
Adicione o seguinte a WEB-INF/classes/__ejb_timer_mappings.xml depois de <persistence-unit-metadata>:
<persistence-unit-defaults> <delimited-identifiers/> </persistence-unit-defaults>
Compacte o arquivo WEB-INF/classes/__ejb_timer_mappings.xml novamente.
(Esta etapa é necessária somente se a instalação atual já usou o EJB Timer Service.) Crie manualmente o EJB__TIMER__TBL no banco de dados usando esta instrução de criação:
CREATE TABLE `EJB__TIMER__TBL` (`TIMERID` VARCHAR(255) NOT NULL, `BLOB` BLOB(64000), `INITIALEXPIRATIONRAW` BIGINT, `SCHEDULE` VARCHAR(255), `INTERVALDURATION` BIGINT, `OWNERID` VARCHAR(255), `STATE` INTEGER, `LASTEXPIRATIONRAW` BIGINT, `PKHASHCODE` INTEGER, `CREATIONTIMERAW` BIGINT, `CONTAINERID` BIGINT, PRIMARY KEY (`TIMERID`))
O subcomando deploy falha em um servidor seguro a menos que a opção --secure seja usada.
Para obter mais informações, consulte o Relatório do problema.
Use a opção --secure ao publicar o subcomando deploy em um servidor seguro.
Um dos certificados de autoridade do armazenamento de confiança do Enterprise Server expirou no dia 7 de janeiro de 2010. O certificado é cacerts.jks. Uma mensagem de erro é gerada na inicialização indicando que o certificado expirou:
Version: V1 Subject: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US Signature Algorithm: MD2withRSA, OID = 1.2.840.113549.1.1.2 Key: SunPKCS11-Solaris RSA public key, 1000 bits (id 17891456, session object) modulus: public exponent: Validity: [From: Tue Nov 08 19:00:00 GMT-05:00 1994, To: Thu Jan 07 18:59:59 GMT-05:00 2010] Issuer: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US SerialNumber: [ 02ad667e 4e45fe5e 576f3c98 195eddc0] |
Para obter mais informações, consulte o relatório do problema.
O certificado de autoridade foi removido na atualização 18 do Java SE 6. Também será removido do armazenamento de confiança do Enterprise Server em uma futura atualização.
Você pode ignorar as mensagens de erro e usar a atualização ou pode eliminar as mensagens de erro. Para parar de receber as mensagens de erro, use keytool para remover o certificado do armazenamento de confiança do Enterprise Server:
=> cd domains/domainX/config => cp cacerts.jks cacerts.jks.save => keytool -delete -keystore cacerts.jks -alias verisignserverca Enter keystore password: |
Para evitar que o certificado expirado reapareça em domínios criados posteriormente, ele também deve ser removido do armazenamento de confiança do modelo:
=> cd glassfish/lib/templates => cp cacerts.jks cacerts.jks.save => keytool -delete -keystore cacerts.jks -alias verisignserverca Enter keystore password: |
Para obter mais informações sobre senha do armazenamento de confiança, consulte as informações sobre senhas-mestre e armazenamentos de confiança em Authentication no Sun GlassFish Enterprise Server v3 Administration Guide.