En este capítulo se describen los problemas conocidos y las soluciones asociadas para el software de Sun Java System Application Server Enterprise Edition 8.2. Si no se especifica una plataforma concreta para un problema, significa que éste se aplica a todas las plataformas. Esta información está organizada en las siguientes secciones:
Este apartado describe problemas conocidos relacionados con la administración, junto con las soluciones pertinentes.
La función de equilibrador de carga no es compatible con Application Server en la opción Configurar automáticamente durante la instalación.
Solución alternativa:la función de equilibrador de carga se puede configurar después de la instalación de Application Server.
Es necesario tener Application Server y Web Server instalados en el equipo para configurar la función de equilibrador de carga.
Para configurar la función de equilibrador de carga, siga estos pasos:
Establezca el valor de IS_LB en "true" (verdadero) y Cfgr_LB en "false" (falso) en el registro HKEY_LOCAL_MACHINE -> Sun Microsystem -> EntSys -> Installer -> Application Server.
Acceda al directorio setup.
cd JavaES-Install-Dir\setup\
|
Ejecute el archivo por lotes ASConfigure.bat.
Siga las instrucciones y proporcione el valor adecuado.
Para el complemento AS_LB, escriba Sun Java System Web Server [obligatorio], ya que éste es el único complemento admitido en Java ES 5.
Reinicie el sistema.
De manera predeterminada, un valor no modificable está en JavaES-Install-Dir \lib\lib\package-appclient.xml para la variable AS_ACC_CONFIG de domain1 al que señala asenv.conf. Si domain1 se elimina y se crea un nuevo dominio, la variable AS_ACC_CONFIG no se actualiza con el nombre del dominio nuevo, lo que provoca que falle la secuencia de comandos package-appclient .
Lleve a cabo una de las siguientes acciones:
Deje intacto domain1 y cree los demás dominios en torno a él.
Elimine domain1 y sustituya el valor no modificable de domain1 en JavaES-Install-Dir \lib\lib\package-appclient.xml por el nuevo nombre de dominio. Repita este paso cada vez que se cree un nuevo dominio si domain1 no está presente.
Si instala el complemento de equilibrado de carga en una instalación de Application Server que ya tiene un complemento de equilibrado de carga instalado (por ejemplo, de 7.1EE), entonces el complemento de 8.2EE reemplazará de forma silenciosa cualquier equilibrador de carga existente, incluso si ha creado una nueva instancia de servidor en la que ejecutará el complemento.
Los archivos del complemento se instalan de manera predeterminada en el directorio install_dir /plugins/lbplugin, lo que significa que sólo se puede utilizar una versión de un complemento con una instalación de Application Server. Tenga en cuenta que el programa de instalación de la consola muestra un mensaje que indica que se está realizando una desinstalación, pero este mensaje puede ser fácil de pasar por alto.
No todo el mundo se encontrará con este problema. Si surge este problema, elimine la instalación antigua de Application Server e instale una nueva en vez de realizar una instalación de una actualización.
Se han realizado varios cambios en el comando asadmin en Application Server 8.2 en comparación con Application Server 7 y versiones compatibles. Por ejemplo, en Application Server 7 y versiones compatibles, el comando para iniciar una instancia de servidor es el siguiente:
asadmin start-instance |
En la versión 8.2, el comando equivalente es el siguiente:
asadmin start-domain --user admin domain1 |
Consulte los siguientes documentos para obtener información completa sobre la última sintaxis del comando asadmin:
Sun Java System Application Server Enterprise Edition 8.2 Administration Guide
Sun Java System Application Server Enterprise Edition 8.2 Reference Manual
Sun Java System Application Server Enterprise Edition 8.2 Upgrade and Migration Guide
Al actualizar a Java ES 5 Application Server 8.2 desde Java ES 2 Application Server 7 y versiones compatibles, puede que experimente incompatibilidades o errores debido a que se han cambiado los puertos predeterminados.
No se puede realizar la duplicación de un dominio en la misma instalación de Application Server mediante los comandos backup-domain y restore-domain , ya que el dominio no se puede restaurar con un nombre distinto del original, aunque el comando asadmin restore-domain proporcione una opción para cambiar el nombre del dominio. Parece que el cambio de nombre del dominio del que se ha hecho una copia de seguridad es correcto, pero al intentar iniciar el dominio en cuestión se producen errores porque las entradas de la configuración del dominio no se han cambiado, y startserv y stopserv usan el nombre de dominio original para definir las rutas.
El nombre de dominio utilizado para restore-domain debe ser el mismo que se usó para el comando original backup-domain. Los comandos backup-domain y restore-domain de Application Server 8.2 sólo se pueden utilizar para realizar copias de seguridad y restaurar el mismo dominio en el mismo equipo.
J2SE 1.4., 5.0 y versiones compatibles se pueden configurar en Application Server. Una función integral de la plataforma J2SE 5.0 es la capacidad para iniciar un agente JMX. Este agente se activa definiendo explícitamente propiedades de sistema al iniciar el servidor.
Entre los valores de ejemplo, se incluyen los siguientes:
name="com.sun.management.jmxremote" value="true" name="com.sun.management.jmxremote.port" value="9999" name="com.sun.management.jmxremote.authenticate" value="false" name="com.sun.management.jmxremote.ssl" value="false"
Después de configurar las propiedades de JMX e iniciar el servidor, se inicia un nuevo jmx-connector en Application Server VM. Un efecto secundario no deseable es que las funciones de administración se ven afectadas negativamente, y la CLI y la GUI de administración de Application Server pueden generar resultados inesperados. Estos resultados se producen debido a los conflictos entre el servidor integrado jmx-connector y el nuevo servidor jmx-connector.
Si utiliza jconsole o cualquier otro cliente compatible con JMX, puede reutilizar el servidor estándar JMX Connector Server que se ejecuta al iniciar Application Server.
Al iniciar el servidor, una línea similar a la mostrada en el siguiente párrafo aparece en server.log. Puede conectarse a la JMXServiceURL especificada en dicha ubicación y realizar las mismas operaciones de configuración y administración después de que se proporcionen correctamente las credenciales, por ejemplo:
[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1|javax.enterprise. system.tools.admin|_ThreadID=10;|ADM1501: Here is the JMXServiceURL for the JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://hostname:8686/management/ rmi-jmx-connector]. This is where the remote administrative clients should connect using the JSR 160 JMX Connectors.|#]
Para obtener más información, consulte la Guía de administración de Sun Java System Application Server 8.2.
Al configurar el equilibrador de carga con una aplicación que tenga un módulo EJB que exporte una URL de servicio web, la raíz del contexto para el nuevo servicio web no se encuentra en el archivo loadbalancer.xml resultante.
Edite el archivo loadbalancer.xml para agregar los módulos web que falten de la siguiente forma:
<web-module context-root="context-root-name" disable-timeout-in-minutes="30" enabled="true"/> |
Sustituya el valor de context-root-name con el nombre root del contexto del servicio web que se expuso como EJB.
Los dominios y servidores de Application Server no utilizan el JDK al que señala el atributo java-home del elemento java-config de la configuración asociada.
El JDK utilizado por los procesos de Application Server de todos los dominios en una instalación del servidor específica viene determinado por el archivo appserver-installation-dir /config/asenv.conf. La propiedad AS_JAVA de este archivo determina el JDK que se utilizará y establecerá durante la instalación. Si los procesos de Application Server utilizan un JDK diferente una vez completada la instalación, este valor puede modificarse para que señale a otro JDK. Tenga en cuenta que este cambio afecta a todos los dominios de esta instalación.
No se comprueba la validez de los cambios manuales efectuados en el archivo asenv.conf, así que tenga cuidado al realizar los cambios. Consulte la documentación del producto para conocer los requisitos mínimos de la versión de JDK al modificar el valor de AS_JAVA.
Este problema lo genera un valor erróneo de %CONFIG_HOME%.
Cambie el nombre del elemento asant existente por asant.bak.
Copie el archivo asant.template ubicado en as_install /lib/install/templates/ee para la versión SE/EE en el directorio as_install /bin/ y cambie el nombre del archivo asant.
Edite el archivo as_install/bin/asant que acaba de copiar sustituyendo el símbolo %CONFIG_HOME% por as_install> /config.
Si se ha efectuado algún cambio manual en el archivo asant.bak original, fusiónelo en el nuevo archivo asant.
Si el archivo no se encuentra en el directorio home del administrador del servidor, es posible que se produzcan errores graves al actualizar determinadas aplicaciones alojadas en el servidor.
Si es posible, el usuario que instaló el servidor debería ejecutar el comando asadmin start-domain domain1.
Si, por el contrario, no es posible, .asadmintruststore debería moverse o copiarse del directorio home del usuario que ha efectuado la instalación al directorio home del usuario que está ejecutando el servidor.
Tenga en cuenta que si se mueve (no se copia) el archivo del directorio home del usuario de instalación al directorio home del usuario de ejecución, es posible que se produzcan problemas con la actualización de la aplicación, como se describe en los errores 6309079, 6310428 y 6312869. Este problema se debe a que el usuario de instalación o actualización no dispone del archivo .asadminstruststore en el directorio home.
El dominio no se inicia cuando la contraseña maestra del dominio contiene el carácter de porcentaje (%).
La contraseña maestra del dominio no debe contener un carácter de porcentaje (%). Esta solución es aplicable al crear un nuevo dominio o cambiar la contraseña maestra del dominio existente.
Después de crear un archivo http-listener seguro e instalar lbplugin, los archivos magnus.conf y obj.conf ubicados en el directorio webserver_instance_dir/config se modifican y el contenido de lbpluginse elimina.
El programa de instalación modifica los archivos de configuración magnus.conf y obj.conf de Application Server como parte de la instalación del complemento de equilibrador de carga. Si inicia una sesión en la consola de administración de Application Server e intenta administrar la configuración de instancias para la instancia en la que el equilibrador de carga se ha instalado, Application Server muestra un mensaje de advertencia indicando que ha detectado una edición manual en la configuración. Esta advertencia, en realidad, hace referencia a los cambios que ha realizado el programa de instalación.
Compruebe que los cambios realizados por el programa de instalación no se han sobrescrito.
Este apartado describe problemas conocidos relacionados con los clientes de la aplicación, junto con las soluciones pertinentes.
Si cuenta con un archivo JAR de nivel superior en el cliente JAR (en este caso, reporter.jar), cuando implemente el cliente JAR, el archivo MANIFEST de dicho JAR sobrescribirá el archivo MANIFEST del cliente JAR.
Ninguna.
Ya no se admiten las tecnologías de contenido dinámico como, por ejemplo, CGI-bin y SHTML.
En su lugar, utilice las tecnologías de servicios web y JSP.
Este apartado describe problemas conocidos relacionados con los controladores JDBC de Sun, junto con las soluciones pertinentes.
Puede experimentar este problema si utiliza una instrucción de actualización preparada mientras se ejecutan dos transacciones paralelas y una de ellas se anula.
Defina un nivel de aislamiento para una conexión, cree el conjunto de conexiones correspondientes en el mismo nivel de aislamiento. Para obtener más información sobre la configuración de los conjuntos de conexiones, consulte Sun Java System Application Server Enterprise Edition 8.2 Administration Guide.
Si una aplicación genera más de 3000 objetos PreparedStatement en una transacción, se puede producir el siguiente error con DB2:
[sunm][DB2 JDBC Driver] No more available statements.. Please recreate your package with a larger dynamicSections value.
Agregue las siguientes propiedades a la definición del conjunto de conexiones para asegurarse de que el controlador vuelva a enlazar los paquetes DB2 con un valor mayor de secciones dinámicas:
createDefaultPackage=true replacePackage=true dynamicSections=1000
Consulte Sun Java System Application Server Enterprise Edition 8.2 Administration Guide para obtener información detallada sobre la configuración de conjuntos de conexiones.
En relación con el error de PreparedStatement mencionado anteriormente, es posible que se muestre otro mensaje de error:
[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.
Aumente el parámetro de configuración APPLHEAPSZ del servidor DB2 Por ejemplo, utilice 4096.
Nivel de aislamiento TRANSACTION_SERIALIZABLE. Si una aplicación utiliza un nivel de aislamiento TRANSACTION_SERIALIZABLE y emplea uno de los parámetros sugeridos anteriormente, es posible que se bloquee cuando intente obtener la conexión.
Para definir un nivel de aislamiento para una conexión, el conjunto de conexiones correspondiente debe crearse en el mismo nivel de aislamiento. Consulte Sun Java System Application Server Enterprise Edition 8.2 Administration Guide para obtener instrucciones.
En este apartado se describen los problemas conocidos relacionados con la arquitectura del conector J2EE y las soluciones asociadas.
En esta situación, un módulo de conector independiente o integrado está implementado en DAS y los conjuntos de conexiones del conector y los recursos se crean para el módulo implementado. Después de reiniciar la instancia DAS, la anulación de la implementación del módulo del conector falla cuando la cascada se establece como false con la siguiente excepción:
[#|2004-10-31T19:52:23.049-0800|INFO|sun-appserver-ee8.1|javax.enterprise.system .core|_ThreadID=14;|CORE5023: Error while unloading application [foo]|#].
Reinicie la instancia de DAS. Utilice la anulación de implementación de cascada (defina la opción de cascada en "true", verdadero) para anular la implementación de los conectores independientes e incorporados.
Como no puede especificar los tamaños mínimo y máximo de conjunto cuando crea un nuevo recurso JMS a partir de la línea de comandos con el comando asadmin create-jms-resource, se supone que el comando asadmin debe crear el recurso utilizando los valores de tamaño de conjunto predeterminados (mínimo 8, máximo 32). En su lugar, la creación del recurso desde la línea de comandos da como resultado los tamaños de conjunto mínimo y máximo predeterminados, 1 y 250 respectivamente.
Una vez creado un recurso JMS desde la línea de comandos, utilice la consola de administración para modificar los valores de tamaño de conjunto mínimo y máximo.
Este apartado describe problemas conocidos relacionados con la documentación, junto con las soluciones pertinentes.
Falta Javadoc o es incorrecto para varios métodos e interfaces AMX:
Los métodos Getter para las estadísticas NumConnAcquired y NumConnReleased no están incluidos en ConnectorConnectionPoolStats y AltJDBCConnectionPoolStats.
Si intenta ejecutar los siguientes métodos en EJBCacheStats, se generará una excepción: getPassivationSuccesses(), getExpiredSessionsRemoved(), getPassivationErrors() y getPassivations().
AMX MBeans necesitan varios segundos después de que se inicie el servidor para registrarse y estar disponibles para su uso.
La constante XTypes.CONNNECTOR_CONNECTION_POOL_MONITOR está mal escrito ("NNN").
La siguiente excepción se desencadena en un subproceso "principal" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher.
No se recomienda el uso del ANT integrado para realizar tareas externas a Application Server.
Sun Java System Application Server Enterprise Edition 8.2 Performance Tuning Guide indica incorrectamente lo siguiente acerca de las opciones de registro:
La GUI de administración proporciona las siguientes dos opciones de registro:
Opción 1: contenido del registro stdout (System.out.print) en el registro de eventos.
Opción 2: contenido del registro stderr (System.err.print) en el registro de eventos.
Estas opciones de registro ya no están disponibles en Application Server Enterprise Edition 8.2.
La documentación de Application Server Enterprise Edition 8.2 describe una función de almacenamiento en la caché de archivos HTTP en HTTP File Cache en Sun Java System Application Server Enterprise Edition 8.2 Performance Tuning Guide Sin embargo, esta función no se ha incluido en Application Server Enterprise Edition 8.2. Tenga en cuenta que esta función se ha vuelto a introducir en Application Server 9.0.
En este apartado, se describen los problemas conocidos relacionados con la base de datos de alta disponibilidad (HADB) y las soluciones asociadas.
A medida que incrementa el tamaño de la memoria intermedia o del dispositivo utilizando hadbm set, el sistema de administración comprueba la disponibilidad de los recursos al crear bases de datos o al agregar nodos. Sin embargo, el sistema no comprueba si hay suficientes recursos disponibles cuando se modifica el tamaño de la memoria intermedia principal o del dispositivo.
Compruebe si hay espacio suficiente en la memoria o el disco en todos los hosts antes de aumentar los atributos de configuración devicesize o buffersize.
No puede registrar el mismo paquete de software con el mismo nombre con distintas ubicaciones en diferentes hosts. Por ejemplo:
hadbm registerpackage test --packagepath=/var/install1 --hosts europa11 Package successfully registered. hadbm registerpackage test --packagepath=/var/install2 --hosts europa12 hadbm:Error 22171: A software package has already been registered with the package name test. |
HADB no admite rutas heterogéneas en los nodos de un clúster de base de datos. Asegúrese de que el directorio de instalación de HADB (--packagepath) sea el mismo para todos los hosts.
Si el agente de administración se está ejecutando en un host con varias interfaces de red, es posible que el comando createdomain presente errores si no están todas las interfaces de red en la misma subred:
hadbm:Error 22020: The management agents could not establish a domain, please check that the hosts can communicate with UDP multicast. |
Si no se configuran, los agentes de administración utilizarán la "primera" interfaz para multidifusiones UDP . "Primera" se define por el resultado de java.net.NetworkInterface.getNetworkInterfaces().
La mejor solución es decirle al agente de administración qué subred utilizar (defina ma.server.mainternal.interfaces en el archivo de configuración. Por ejemplo, ma.server.mainternal.interfaces=10.11.100.0 ). Otra opción es configurar el enrutador entre las subredes para que dirija los paquetes de multidifusión (el agente de administración utiliza la dirección de multidifusión 228.8.8.8).
Antes de volver a intentarlo con una configuración nueva de los agentes de administración, puede que deba limpiar el depósito del agente de administración. Detenga todos los agentes del dominio, y elimine todos los archivos y directorios del directorio del depósito (se identifican mediante repository.dr.path en el archivo de configuración del agente de administración). Esta limpieza debe realizarse en todos los hosts antes de reiniciar los agentes con un nuevo archivo de configuración.
Una vez eliminada una instancia de HADB, fallarán los intentos siguientes de crear nuevas instancias con el comando configure-ha-cluster. El problema es que los antiguos directorios permanecen en la instancia de HADB original en ha_install_dir/rep/* y ha_install_dir/config/hadb/instance_name .
Asegúrese de que elimina manualmente estos directorios tras eliminar una instancia de HADB.
Hay un error en la versión de 64 bits de Red Hat Enterprise Linux 3.0 que fuerza al proceso clu_trans_srv a pasar al modo sin interrupción cuando se realiza una E/S asíncrona. Esto significa que kill -9 no funciona y el sistema operativo debe reiniciarse.
Use una versión de 32 bits de Red Hat Enterprise Linux 3.0.
Las letras mayúsculas en las contraseñas se convierten en minúsculas cuando la contraseña se almacena en hadb.
No use contraseñas que contengan letras mayúsculas.
A veces un problema de contención de recursos en el servidor puede provocar la desconexión de un cliente de administración. Al volverse a conectar, puede devolverse el siguiente mensaje de error confuso "hadbm:Error 22184: Es necesaria una contraseña para conectarse al agente de administración".
Compruebe si se ha producido un problema de recursos en el servidor, tome las medidas oportunas (por ejemplo, agregue más recursos) y vuelva a intentarlo.
Las interfaces de uso especial con direcciones IP similares a 0.0.0.0 no deberían registrarse como interfaces válidas para los nodos de HADB en el agente de administración. El registro de dichas interfaces puede provocar problemas si los nodos de HADB se configuran en estas interfaces mediante la ejecución, por parte del usuario, de un comando hadbm create que utilice nombres de host en lugar de direcciones IP. Los nodos no podrán establecer comunicación, lo que provocara el bloqueo del comando create.
Al utilizar hadbm create en hosts con varias interfaces, especifique siempre explícitamente las direcciones IP con una notación DDN.
En la plataforma Windows, con determinadas configuraciones y cargas, es posible que se produzca un gran número de errores de reensamblaje en el sistema operativo. Se ha detectado este problema con configuraciones de más de 20 nodos al ejecutar varios análisis de tabla (select *) en paralelo. Entre los síntomas, se incluyen la interrupción de transacciones con frecuencia, el retraso de la reparación o recuperación en completarse y la aparición frecuente de tiempos de espera en diversas partes del sistema.
Para solucionar el problema, puede establecer la variable del registro de Windows HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters en un valor superior a 100 (valor predeterminado). Para obtener mejores resultados, incremente este valor a 0x1000 ( 4096). Para obtener más información, consulte el artículo 811003 en las páginas de asistencia técnica de Microsoft.
Cuando un equipo está sobrecargado, el mecanismo de ocultación falla y algunos caracteres de la contraseña introducida se visualizan. Esta exposición representa un riesgo de seguridad mínimo. La contraseña debería estar siempre oculta.
Guarde las contraseñas en sus propios archivos de contraseñas (el método recomendado desde Application Server 8.1) y consulte estos archivos con las opciones --adminpassword o --dbpasswordfile.
Este apartado describe problemas conocidos relacionados con la instalación, junto con las soluciones pertinentes.
Apache e IIS no se pueden configurar con el programa de instalación de Java ES 5. Tiene que configurar manualmente Apache e IIS en la plataforma de Windows.
Para configurar Apache o IIS para el equilibrador de carga, siga estos pasos.
Para configurar Apache 2.x:
Instale Apache 2.x.
Apache se instala en el directorio APDIR=C:\Apache2\Apache2.
Instale JES5 con la instalación mínima.
Deseleccione todos los componentes, excepto el equilibrador de carga. Java ES 5 se instala en el directorio JES5DIR=C:\Program Files\Sun\JavaES5.
The
Cree los directorios resource y errorpages en el directorio Apache2.
mkdir %APDIR%\modules\resource
mkdir %APDIR%\modules\errorpages
Copie el archivo de recursos en el directorio resource.
cd %APDIR%\modules\resource
copy %JES5DIR%\appserver\lib\webserver-plugin\windows\apache2\LBPlugin*.res .
Copie el DLL del equilibrador de carga en el directorio modules.
cd %APDIR%\modules
copy %JES5DIR%\appserver\lib\webserver-plugin\windows\apache2\mod_loadbalancer.dll .
Copie la plantilla errorpages en el directorio errorpages.
cd %APDIR%\modules\errprpages
copy %JES5DIR%appserver\lib\webserver-plugin\windows\iws\errorpages .
Copie la plantilla del equilibrador de carga y el otro DTD en el directorio config de Apache.
cd %APDIR%\config
copy %JES5DIR%\appserver\lib\install\templates\loadbalancer.xml.template .
copy %JES5DIR%\appserver\lib\dtds\sun-loadbalancer* .
Cree una copia de seguridad del archivo httpd.conf.
cd %APDIR%\config
copy httpd.conf httpd.conf.orig
Edite el archivo httpd.conf.
Anexe las siguientes líneas al archivo httpd.conf:
##BEGIN EE LB Plugin Parameters LoadModule apachelbplugin_module modules/mod_loadbalancer.dll <IfModule mod_apache2lbplugin.cpp> config-file "C:\Apache2\Apache2/conf/loadbalancer.xml" locale en </IfModule> <VirtualHost 10.12.8.107> DocumentRoot "C:\Apache2\Apache2/htdocs" ServerName vm07 </VirtualHost> ##END EE LB Plugin Parameters
Sustituya C:\Apache2\Apache2 por el directorio %APDIR% real.
También sustituya la IP, el nombre del servidor y el directorio raíz de documentos.
Cree un nuevo directorio sec_db_files en %APDIR%.
cd %APDIR%
mkdir sec_db_files
Copie el almacén de claves NSS en el directorio %APDIR%\sec_db_files.
cd %APDIR%\sec_db_files
copy %JES5DIR%\appserver\lib\webserver-plugin\windows\iis\*.db .
Establezca la RUTA para que incluya las bibliotecas necesarias.
Anteponga la siguiente ruta adicional:
PATH %JES5DIR%\share\lib;%JES5DIR%\appserver\lib;%JES5DIR%\appserver\bin
Sustituya %JES5DIR% por el directorio de Java ES 5 actual.
Agregue la variable NSPR_NATIVE_THREADS_ONLY con el valor 1 en el entorno del sistema.
Reinicie y pruebe Apache 2 (después de configurar loadbalancer.xml ).
Para configurar IIS LBPlugin:
Cree el directorio sun-passthrough en el directorio c:\inetpub\wwwroot .
cd c:\inetpub\wwwroot
mkdir sun-passthrough
Cree los directorios errorpages, resource y sec_db_files en el directorio c:\inetpub\wwwroot\sun-passthrough.
cd c:\inetpub\wwwroot\sun-passthrough
mkdir errorpages
mkdir resources
mkdir sec_db_files
Copie los archivos DLL en el directorio sun-passthrough.
copy <as_install_dir>/appserver/lib/webserver-plugin/iis/*.dll c:\inetpub\wwwroot\sun-passthrough\
Copie los DTD en el directorio sun-passthrough.
copy <as_install_dir>/appserver/lib/dtds/sun-loadbalancer*.dtd c:\inetpub\wwwroot\sun-passthrough\
Copie el archivo sun-passthrough.properties en el directorio sun-passthrough .
copy <as_install_dir>/appserver/lib/webserver-plugin/iis c:\inetpub\wwwroot\sun-passthrough\
Copie los archivos DB de seguridad en el directorio sun-passthrough.
copy <as_install_dir>/appserver/lib/webserver-plugin/iis/*.db c:\inetpub\wwwroot\sun-passthrough\sec_db_files\
Copie los archivos de recursos en el directorio sun-passthrough.
copy <as_install_dir>/appserver/lib/webserver-plugin/iws/*.res c:\inetpub\wwwroot\sun-passthrough\resource\
Copie las páginas de errores en el directorio sun-passthrough.
copy <as_install_dir>/appserver/lib/webserver-plugin/iws/errorpages/*.html c:\inetpub\wwwroot\sun-passthrough\errorpages\
Copie la plantilla loadbalancer.xml.example en el directorio sun-passthrough.
copy <as_install_dir>/appserver/lib/install/templates/loadbalancer.xml.example c:\inetpub\wwwroot\sun-passthrough\
Edite el archivo sun-passthrough.properties.
##BEGIN EE LB Plugin Parameters log-file = C:\InetPub\wwwroot\sun-passthrough\lb.log ### The valid options for different logging levels are FATAL, SEVERE, WARNING, INFO and FINE. log-level = INFO lb-config-file = C:\InetPub\wwwroot\sun-passthrough\loadbalancer.xml ##END EE LB Plugin Parameters
Si está configurando IIS6, asegúrese de definir los permisos y realizar los pasos adicionales, como se describen en la documentación de AS82. También puede que deba definir el modo de aislamiento de IIS6 en el modo compatible con IIS5.
En la plataforma Windows, inmediatamente después de instalar Application Server Enterprise Edition, el agente de Message Queue falla al iniciarse. Aparece un mensaje de error indicando que el directorio drive:\as\domains\domain1\imq no existe.
Tenga en cuenta que si el agente se ejecuta después de iniciar domain1, Application Server creará el directorio y no habrá ningún problema.
Cree var_home_dir_location antes de crear el agente:
$imqbrokerd -varhome var_home_dir_location |
Por ejemplo:
$imqbrokerd -varhome D:\as\domains\domain1\imq |
Para ejecutar el tutorial de J2EE 1.4 en Sun Java System Application Server Enterprise Edition 8.2, lleve a cabo estas tareas:
Cuando edite el archivo /common/build.properties tal y como se describe en el apartado “About the Examples” del capítulo “About this Tutorial”, cambie también el puerto 4848 por el 4849.
Cuando use la herramienta de implementación (Deploytool), agregue el servidor localhost:4849 antes de implementar un ejemplo.
Cuando utilice la consola de administración para crear un recurso, use la ficha Targets (Destinos) para especificar el servidor como el destino. Si utiliza la línea de comandos o un destino asant, el servidor es el destino predeterminado y no es necesario realizar ninguna acción adicional.
En esta sección, se describen problemas conocidos relacionados con la administración del ciclo de vida, junto con las soluciones pertinentes.
Después de establecer minimum-delivery-interval de la propiedad ejb-timer-service en 9000, si se intenta establecer redelivery-interval-in-mills de la propiedad ejb-timer-service en 7000, el comando set fallará. Aparecerá el siguiente mensaje de error:
[echo] Doing admin task set [exec] [Attribute(id=redelivery-interval-internal-in-millis) : Redelivery- Interval (7,000) should be greater than or equal to Minimum-delivery- interval-in-millis (9,000)] [exec] CLI137 Command set failed.
minimum-delivery-interval es el intervalo mínimo de duración entre las entregas del mismo temporizador periódico.
redelivery-interval-in-mills es el tiempo que espera el servicio de temporizador para volver a intentar la entrega después de que se haya producido un error en ejbTimeout.
El problema es que la lógica que relaciona la propiedad de intervalo de reentrega con la propiedad de entrega mínima es incorrecta e impide que se utilice la GUI o la CLI para definir valores en los que el intervalo de entrega mínimo sea superior al intervalo de reentrega.
minimum-delivery-interval-in-millis debe ser igual o mayor que el valor de redelivery-interval-in-millis de la propiedad ejb-timer-service . El problema es que se produce una comprobación de validación errónea en Application Server al verificar que el valor de redelivery-interval-in-millis es superior al valor de minimum-delivery-interval-in-millis.
Use los valores predeterminados para estas propiedades, tal y como se indica a continuación:
minimum-delivery-interval(default)=7000 redelivery-interval-in-millis(default)=5000
Si utiliza valores que no sean los predeterminados, se generará un error.
Este apartado describe problemas conocidos relacionados con el registro, junto con las soluciones pertinentes.
Si establece la opción java.security.debug para JVM, la instancia del servidor se bloqueará irreversiblemente al iniciarse; por ejemplo, si establece domain.xml en los siguientes valores, se producirá este problema:
<jvm-options\>-Djava.security.debug=access,failure</jvm-options\>
Ninguna. Evite establecer este indicador.
Las ubicaciones predeterminadas de la instancia del servidor y del registro han cambiado en Sun Java System 8.2 en comparación con la versión 7 y versiones compatibles.
Para obtener más información, consulte la Sun Java System Application Server Enterprise Edition 8.2 Administration Guide o la Sun Java System Application Server Enterprise Edition 8.2 Upgrade and Migration Guide.
Este apartado describe problemas conocidos relacionados con Java Message Queue, junto con las soluciones pertinentes.
Los errores al volverse a conectar en situaciones que dependen de temporizadores pueden estar causados por diversos problemas.
Puede solucionarlos de esta forma:
Reinicie los agentes involucrados
Reinicie las instancias involucradas de Application Server
Debido a un cambio reciente, cuando una escucha de mensaje asíncrono es el único subproceso activo en el contenedor app-client, el resto de la máquina virtual (VM) appclient existe en forma de daemon. Este comportamiento supone un regresión para las aplicaciones anteriores que realizaban recepciones asíncronas en ACC. Este problema afecta a los clientes de la aplicación que configuran un módulo de escucha de mensajes JMS y salen del subproceso principal.
No salga del subproceso principal. Espere a que la escucha del mensaje informe al subproceso principal antes de detenerlo.
Este apartado describe problemas conocidos relacionados con la supervisión, junto con las soluciones pertinentes.
En la versión beta de Application Server, la estructura de supervisión no se admite de forma predeterminada.
Solución
Para integrar la supervisión de estructura en Application Server, siga estos pasos:
Edite el archivo <Install_dir>\appserver\lib\install\templates\ee\com.sun.cmm.as.xml .
Actualice ${InstalledDate} con la ubicación de instalación de Application Server y ${InstalledDate} con la fecha actual.
Copie el archivo <Install_dir>\appserver\lib\install\templates\ee\com.sun.cmm.as.xml en <Install_dir>\appserver\lib.
Ejecute el comando <MFWK_Install_location>\bin\mfwksetup.bat -r <Install_dir>\appserver\lib\com.sun.cmm.as.xml .
El valor ${InstalledLocation} es la ubicación de instalación de Application Server, c:\Sun\JavaES5\appserver. Para $InstalledDate, debe poner la hora en milisegundos calculando la hora actual en milisegundos desde 1970.
En esta sección, se describen problemas conocidos relacionados con el código de ejemplo incluido en el producto Application Server 8.2.
En la plataforma Windows, es necesario pulsar las teclas Control+C para mqfailover para cerrar el proceso bloqueado. Debe volver a ejecutar el proceso setup-one-machine-cluster .
Desde install_dir\samples\ee-samples\failover\apps\mqfailover\docs\index.html, , ejecute los siguientes comandos:
Consola 1
cd install_dir\samples\ee-samples asant start-mq-master-broker1 |
Consola 2
cd install_dir\samples\ee-samples asant start-mq-cluster-broker1 |
Consola 3
cd install_dir\samples\ee-samples asant start-mq-cluster-broker2 |
Consola 4
cd install_dir\samples\ee-samples asadmin start-domain domain1 |
Si ya ha ejecutado asant setup-one-machine-cluster-without-ha o asant setup-one-machine-cluster-with-ha para cualquier otro ejemplo de Enterprise Edition, ejecute asant configure-mq. De lo contrario, ejecute asant setup-one-machine-cluster-and-configure-mq. En este caso, el comando parece que se ejecuta correctamente:
start_nodeagent: [echo] Start the node agent cluster1-nodeagent [exec] Command start-node-agent executed successfully. |
Pero el sistema se bloquea definitivamente.
Ninguna. Este problema afecta de forma parecida a todos los ejemplos de Enterprise Edition que utilizan este destino ant en Windows. Una solución consiste en pulsar Ctrl+C para desbloquear el proceso y, a continuación, volver a ejecutarlo.
Después de completar las instrucciones de implementación de asadmin y ejecutar la aplicación de ejemplo de conmutación por error de Message Queue, aparece el siguiente mensaje de error:
/opt/SUNWappserver/domains/domain1/config/sun-acc.xml -name MQFailoverTestClient -textauth -user j2ee -password j2ee Nov 18, 2004 10:50:17 PM com.sun.enterprise.naming.NamingManagerImpl bindObjects SEVERE: NAM0006: JMS Destination object not found: jms/durable/TopicA Nov 18, 2004 10:50:18 PM com.sun.enterprise.naming.NamingManagerImpl bindObjects SEVERE: javax.naming.NameNotFoundException javax.naming.NameNotFoundException |
La documentación no indica explícitamente que los recursos de JMS se deben crear manualmente si se realiza la implementación manual utilizando los comandos asadmin deploy. La documentación tampoco menciona que los destinos "ant" proporcionados deben utilizarse para implementar la aplicación de ejemplo.
Use el destino de deploy asant para la secuencia de comandos build.xml, lo que crea los recursos JMS necesarios para ejecutar la aplicación.
Este apartado describe problemas conocidos relacionados con los certificados y la seguridad de las aplicaciones web y Application Server, junto con las soluciones pertinentes.
Las aplicaciones WebServiceSecurity no pueden ejecutarse con J2SE 5.0 por los siguientes motivos:
J2SE 5.0 PKCS11 no es compatible con el modo UNWRAP
J2SE 5.0 PKCS11 no admite RSA/ECB/OAEPWithSHA1AndMGF1Padding con PKCS11
Use J2SE 1.4.2 con cualquier otro proveedor JCE (no el que se incluye de forma predeterminada). Tenga en cuenta que la compatibilidad con el acelerador de hardware no está presente en esta configuración.
Cuando se configura el equilibrador de carga (hardware) para la finalización de SSL, Application Server cambia el protocolo https por http durante la redirección.
Agregue un equilibrador de carga de software entre el equilibrador de carga de hardware y Application Server.
En esta sección, se describen problemas conocidos relacionados con la utilidad de actualización, junto con las soluciones pertinentes.
Hay dos aspectos de este problema:
Si se ejecutan las secuencias de comandos de configuración de aplicaciones de ejemplo que utilizan la base de datos Derby, ésta se crea en el directorio actual o en <install_root>/bin.
La secuencia de comandos Ant build crea un archivo password.txt que guarda el archivo de contraseña de administración en el directorio actual, en el que no se podrá escribir en situaciones de zonas dispersas o que no sean raíz.
Ubicación de la base de datos Derby: utilice la opción --dbhome con el comando start-database para crear la base de datos en el valor especificado para --dbhome. Por ejemplo, a continuación, se encuentra la sintaxis de comando asadmin para start-database.
start-database [--dbhost 0.0.0.0] [--dbport 1527] [--dbhome db_directory] [--echo=false] [--verbose=false] |
Ubicación del archivo password.txt – se puede escribir en el directorio de ejemplos, ya que todos los comando integrados incluyen la creación de un archivo password.txt en ese directorio. Asegúrese de que instala una copia de los ejemplos que funcione en una ubicación con permiso de escritura.
La instalación de Application Server Enterprise Edition 8.2 no permite caracteres especiales en el nombre de usuario de administración. La creación del dominio fallará si se utiliza cualquier carácter especial. Sin embargo, tenga en cuenta que la contraseña de administración puede tener caracteres especiales.
Al actualizar de Application Server 7 a Application Server 8.2, verifique que el nombre de usuario de administración no contiene ningún carácter especial.
En esta sección, se describen problemas conocidos relacionados con el contenedor web, junto con las soluciones pertinentes.
Sun Java ES 5 Application Server no es compatible con Apache e IIS (contenedor web que no sea de Sun) para el complemento de equilibrador de carga. Sun Java ES instala Sun Java System Web Server para la configuración del complemento de equilibrador de carga.
En la plataforma Windows, si solicita una precompilación de JSP cuando implemente una aplicación en Windows, los siguientes intentos para anular la implementación o para volver a implementarla (o alguna aplicación con el mismo Id. de módulo) no funcionarán tal y como se esperaba. La precompilación de JSP abre archivos JAR en la aplicación, pero luego no los cierra y Windows impide que se anule la implementación porque no se pueden eliminar los archivos e impide que se puedan volver a implementar, puesto que no se pueden sobrescribir.
Tenga en cuenta que la anulación de la implementación es correcta hasta un punto en el que la aplicación se elimina lógicamente de Application Server. Tenga en cuenta también que la utilidad asadmin no muestra ningún mensaje de error, a pesar de que los archivos jar bloqueados y el directorio de la aplicación siguen estando en el servidor. El archivo de registro del servidor contiene mensajes en los que se indica que no se han podido eliminar los archivos ni el directorio de la aplicación.
Los intentos de volver a implementar la aplicación después de que ésta se haya anulado fallan porque el servidor trata de eliminar los archivos existentes y el directorio, pero estos intentos fallan. Esto puede suceder si intenta implementar una aplicación que utilice el mismo Id. de módulo que la aplicación que se implementó originalmente porque el servidor utiliza dicho Id. de módulo cuando elige el nombre del directorio para conservar los archivos de la aplicación.
Si intenta reimplementar la aplicación sin anular su implementación primero, se producirán fallos por las mismas razones.
Diagnóstico
Si intenta volver a implementar la aplicación o implementarla después de haberla eliminado, la utilidad asadmin devuelve un error parecido al siguiente:
An exception occurred while running the command. The exception message is: CLI171 Command deploy failed : Deploying application in domain failed; Cannot deploy. Module directory is locked and can't be deleted. |
No se producirá este problema si especifica --precompilejsps=false (la configuración predeterminada) al implementar una aplicación. Tenga en cuenta que el primer uso que haga de la aplicación desencadenará la compilación JSP, por lo que el tiempo de respuesta para la primera solicitud será superior al de las solicitudes posteriores.
Debe saber también que si realiza una compilación previa, deberá detener y reiniciar el servidor antes de anular la implementación de la aplicación o de volver a implementarla. Al cerrar, se liberan los archivos JAR bloqueados por lo que la anulación de la implementación o el proceso para volver a implementar se realizarán correctamente.
El elemento opcional "load-on-startup servlet" del archivo web.xml indica que el servlet asociado se debe cargar e iniciar cuando se inicie la aplicación web de la que forma parte.
El contenido opcional de este elemento es un entero que indica el orden en el que se debe cargar e iniciar el servlet con respecto a los demás servlets de la aplicación web. Si el elemento <load-on-startup> está vacío, indica que el orden no es relevante, siempre y cuando el servlet se cargue e inicie durante el inicio de la aplicación web que lo contiene.
El esquema de Servlet 2.4 de web.xml ya no admite un elemento <load-on-startup> vacío. Esto implica que debe especificarse un entero al utilizar un archivo web.xml basado en Servlet 2.4. Si se especifica un elemento <load-on-startup> vacío, como en <load-on-startup/>, el archivo web.xml no podrá realizar la validación en el esquema de Servlet 2.4 para web.xml, por lo que fallará la implementación de la aplicación web.
Problema de compatibilidad con versiones anteriores. En el caso de web.xml basado en Servlet 2.3, sí se puede dejar vacío <load-on-startup>.
Especifique <load-on-startup>0</load-on-startup> al utilizar un archivo web.xml basado en Servlet 2.4 para indicar que el orden de carga del servlet es irrelevante.
Se puede acceder a la página JSP, pero se producen fallos al compilar y el registro del servidor contiene el mensaje de error "Unable to execute command", es decir, que no se puede ejecutar el comando con este seguimiento de pila:
at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher. exec(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute. launch(Execute.java:416) at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:427) at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter. executeExternalCompile(DefaultCompilerAdapter.java:448) at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute (JavacExternal.java:81) at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:842) at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:682) at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:396) |
Defina el conmutador de compilación "fork" de JSP en "false".
Puede activar esta configuración de una de las dos formas siguientes:
Globalmente, al configurar el parámetro fork init de JspServlet en ${S1AS_HOME}/domains/domain1/config/default-web.xml en false:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> .... <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> .... </servlet> |
En cada aplicación web, configurando la propiedad de configuración JSP fork de sun-web.xml en false:
<sun-web-app> <jsp-config> <property name="fork" value="false" /> </jsp-config> </sun-web-app> |
Las dos configuraciones impedirán que Ant genere un nuevo proceso para la compilación javac.
Sun Java System Application Server Enterprise Edition 8.2 agrega compatibilidad para la función proporcionada por el complemento auth-passthrough que está disponible con Sun Java System Application Server Enterprise Edition 7.1. Sin embargo, en Application Server Enterprise Edition 8.2, la función del complemento auth-passthrough está configurada de forma diferente.
La función del complemento auth-passthrough en Application Server Enterprise Edition 7.1 ha resultado útil en situaciones de implementación de dos capas, con las siguientes restricciones:
La instancia de Application Server está protegida por un segundo servidor de seguridad detrás del servidor de seguridad corporativo.
No se permiten conexiones de clientes directamente a la instancia de Application Server:
En arquitecturas de red de este tipo, un cliente se conecta a un servidor web de principal (front-end) que se haya configurado con la función del complemento service-passthrough y reenvía solicitudes HTTP a la instancia de Application Server que actúa de proxy para que las procese. La instancia de Application Server sólo puede recibir solicitudes desde el proxy del servidor web, pero nunca directamente de los hosts clientes. En consecuencia, ninguna aplicación implementada en la instancia de Application Server que actúa de proxy que solicite información del cliente (como pueda ser la dirección IP del cliente) recibirá la IP de host del proxy, puesto que éste es el host que origina la solicitud remitida.
En Application Server Enterprise Edition 7.1, la función del complemento auth-passthrough se puede configurar en la instancia de Application Server que actúa como proxy para hacer que la información de los clientes remotos esté disponible directamente para todas las aplicaciones implementadas; de esta forma, el funcionamiento es como si la instancia de Application Server que actúa de proxy hubiera recibido la solicitud directamente en lugar de a través del servidor web intermediario que ejecuta el complemento service-passthrough.
En Application Server Enterprise Edition 8.2, la función auth-passthrough puede habilitarse configurando la propiedad authPassthroughEnabled del elemento <http-service> de domain.xml como TRUE (verdadero), de la siguiente forma:
<property name="authPassthroughEnabled" value="true"/> |
Las mismas consideraciones de seguridad de la función del complemento auth-passthrough de Application Server Enterprise Edition 7.1 se aplican también a la propiedad authPassthroughEnabled de Application Server Enterprise Edition 8.2, ya que authPassthroughEnabled permite la sobrescritura de información que se puede utilizar con fines de autenticación (como la dirección IP desde la que se originó la solicitud o el certificado de cliente SSL). Por lo tanto, sólo a clientes o servidores de confianza debe permitírseles la conexión a una instancia Application Server Enterprise Edition 8.2 con authPassthroughEnabled establecido en TRUE (verdadero). Como medida de precaución, se recomienda que sólo los servidores que estén detrás de un servidor de seguridad corporativo se configuren con authPassthroughEnabled establecido en TRUE (verdadero). Un servidor que esté accesible a través de Internet nunca debe configurarse con authPassthroughEnabled definido en TRUE (verdadero).
Tenga en cuenta que en una situación en la que el servidor web proxy se haya configurado con el complemento service-passthrough y reenvíe solicitudes a una instancia de Application Server 8.1 Update 2 con authPassthroughEnabled establecido como TRUE (verdadero), la autenticación SSL de cliente puede estar habilitada en el servidor Web proxy y deshabilitada en la instancia Application Server 8.1 Update 2 que actúa de proxy. En este caso, la instancia de Application Server 8.1 Update 2 seguirá considerando la solicitud como si estuviera autenticada a través de SSL y proporcionará el certificado SSL de cliente a cualquier aplicación implementada que lo solicite.
Al crear un httplistener con el indicador --enabled=false, el módulo de escucha no llega a deshabilitarse. El indicador --enabled no tiene efecto alguno cuando se utiliza al mismo tiempo que se crea el módulo de escucha.
Cree el módulo de escucha con un estado habilitado; deshabilítelo manualmente más tarde.