Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
Capítulo 4. Cambios de configuración del servidor [Esto es una traducción automática]
4.1. Cambios en la instalación de RPM [Esto es una traducción automática]
En JBoss EAP 6, la ruta predeterminada para la instalación de RPM fue la /usr/share/jbossas/
directorio.
JBoss EAP 7 fue construido para Biblioteca de colecciones de software convenciones. El directorio raíz de las Colecciones de software normalmente se encuentra en el /opt/
directorio para evitar posibles conflictos entre Colecciones de Software y la instalación del sistema base. El uso de /opt/
el directorio es recomendado por el Estándar de jerarquía del sistema de archivos (FHS). Como resultado, la ruta predeterminada para la instalación de RPM ha cambiado a /opt/rh/eap7/root/usr/share/wildfly/
en JBoss EAP 7.
4.2. Opciones de migración de configuración del servidor [Esto es una traducción automática]
Para migrar la configuración de su servidor de JBoss EAP 6 a JBoss EAP 7, puede usar el Herramienta de migración de servidor JBoss o puede realizar una migración manual con la ayuda de CLI de gestión migrate
operación.
Cambios en la configuración del servidor EJB [Esto es una traducción automática]
La herramienta de migración de servidores de JBoss es el método preferido para actualizar su configuración e incluir las nuevas funciones y configuraciones en JBoss EAP 7 mientras mantiene su configuración existente. Para obtener información sobre cómo configurar y ejecutar la herramienta, consulte Uso de la herramienta de migración de servidores JBoss.
Gestión de la migración de la CLI Operación [Esto es una traducción automática]
Puede usar la CLI de administración migrate
operación para actualizar el jacorb
, messaging
, y web
subsistemas en el archivo de configuración del servidor JBoss EAP 6 para permitir que se ejecuten en la nueva versión, pero tenga en cuenta que el resultado no es una configuración completa de JBoss EAP 7. Por ejemplo:
-
La operación no actualiza el original
remote
protocolo y configuración de puerto para el nuevohttp-remoting
y nuevas configuraciones de puerto ahora usadas en JBoss EAP 7. - La configuración no incluye los nuevos subsistemas o características de EAP de JBoss, como las implementaciones de singleton en clúster o el apagado ordenado.
- La configuración no incluye las nuevas características de Java EE 7, como el procesamiento por lotes.
-
los
migrate
la operación no migra elejb3
configuración del subsistema Para obtener información sobre posibles problemas de migración de EJB, consulte Cambios en la configuración del servidor EJB.
Para obtener más información sobre el uso de migrate
operación a la migración la configuración del servidor, vea Gestión de la migración de la CLI Operación.
4.3. Gestión de la migración de la CLI Operación [Esto es una traducción automática]
Puede usar la CLI de administración para actualizar los archivos de configuración de su servidor JBoss EAP 6 para que se ejecuten en JBoss EAP 7. La CLI de administración proporciona una migrate
operación para actualizar automáticamente el jacorb
, messaging
, y web
subsistemas de la versión anterior a la nueva configuración. También puedes ejecutar el describe-migration
operación para el jacorb
, messaging
, y web
subsistemas para revisar los cambios de configuración de migración propuestos antes de realizar la migración. No hay reemplazos para el cmp
, jaxr
, o threads
subsistemas y deben eliminarse de la configuración del servidor.
Ver Opciones de migración de configuración del servidor para las limitaciones de la migrate
operación. La herramienta de migración de servidores de JBoss es el método preferido para actualizar su configuración e incluir las nuevas funciones y configuraciones en JBoss EAP 7 mientras mantiene su configuración existente. Para obtener información sobre cómo configurar y ejecutar la herramienta, consulte Uso de la herramienta de migración de servidores JBoss.
Tabla 4.1. Operación CLI de Migración y Gestión de Subsistemas [Esto es una traducción automática]
JBoss EAP 6 Subsystem | JBoss EAP 7 Subsystem | Gestión de la migración de la CLI Operación [Esto es una traducción automática] |
---|---|---|
cmp |
sin reemplazo |
Borrar |
jacorb |
iiop-openjdk |
emigrar |
jaxr |
sin reemplazo |
Borrar |
mensajería |
messaging-activemq |
emigrar |
trapos |
sin reemplazo |
Borrar |
web |
resaca |
emigrar |
Inicie el servidor y la CLI de administración
Siga los pasos a continuación para actualizar la configuración de su servidor JBoss EAP 6 para que se ejecute en JBoss EAP 7.
- Antes de comenzar, repase Copia de seguridad de datos importantes y revisión del estado del servidor. Contiene información importante sobre cómo asegurarse de que el servidor se encuentre en buen estado y de que se hagan copias de seguridad de los archivos correspondientes.
Inicie el servidor JBoss EAP 7 con la configuración de JBoss EAP 6.
- Haga una copia de seguridad de los archivos de configuración del servidor JBoss EAP 7.
Copie el archivo de configuración de la versión anterior en el directorio de JBoss EAP 7.
$ cp EAP6_HOME/standalone/configuration/standalone-full.xml EAP7_HOME/standalone/configuration
Navegue al directorio de instalación de JBoss EAP 7 e inicie el servidor con el
--start-mode=admin-only
argumento.$ bin/standalone.sh -c standalone-full.xml --start-mode=admin-only
NotaVerás lo siguiente
org.jboss.as.controller.management-operation
ERRORES en el registro del servidor cuando inicia el servidor. Se esperan estos errores e indican que las configuraciones heredadas del subsistema deben eliminarse o migrarse a JBoss EAP 7.- WFLYCTL0402: Subsystems [cmp] provided by legacy extension 'org.jboss.as.cmp' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [jacorb] provided by legacy extension 'org.jboss.as.jacorb' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [jaxr] provided by legacy extension 'org.jboss.as.jaxr' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [messaging] provided by legacy extension 'org.jboss.as.messaging' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [threads] provided by legacy extension 'org.jboss.as.threads' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [web] provided by legacy extension 'org.jboss.as.web' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
Abra una nueva terminal, navegue hasta el directorio de instalación de JBoss EAP 7 y comience la CLI de administración utilizando la
--controller=remote://localhost:9999
argumentos.$ bin/jboss-cli.sh --connect --controller=remote://localhost:9999
Migre los subsistemas JacORB, de mensajería y web
Para revisar los cambios de configuración que se realizarán en el subsistema antes de realizar la migración, ejecute el
describe-migration
operación.los
describe-migration
operación utiliza la siguiente sintaxis./subsystem=SUBSYSTEM_NAME:describe-migration
El siguiente ejemplo describe los cambios de configuración que se realizan en JBoss EAP 6.4
standalone-full.xml
archivo de configuración cuando se migra a JBoss EAP 7. Las entradas se eliminaron de la salida para mejorar la legibilidad y ahorrar espacio.Ejemplo: operación de descripción-migración [Esto es una traducción automática]
/subsystem=messaging:describe-migration { "outcome" => "success", "result" => { "migration-warnings" => [], "migration-operations" => [ { "operation" => "add", "address" => [("extension" => "org.wildfly.extension.messaging-activemq")], "module" => "org.wildfly.extension.messaging-activemq" }, { "operation" => "add", "address" => [("subsystem" => "messaging-activemq")] }, <!-- *** Entries removed for readability *** --> { "operation" => "remove", "address" => [("subsystem" => "messaging")] }, { "operation" => "remove", "address" => [("extension" => "org.jboss.as.messaging")] } ] } }
Ejecuta el
migrate
operación para migrar la configuración del subsistema al subsistema que lo reemplaza en JBoss EAP 7. La operación utiliza la siguiente sintaxis./subsystem=SUBSYSTEM_NAME:migrate
Notalos
messaging
subsistemadescribe-migration
ymigrate
las operaciones le permiten pasar un argumento para configurar el acceso por clientes heredados. Para obtener más información sobre la sintaxis del comando, consulte Migración del subsistema de mensajería y compatibilidad directa.Revise el resultado y el resultado del comando. Asegúrese de que la operación se haya completado correctamente y de que no haya entradas de "aviso de migración". Esto significa que la configuración de migración para el subsistema está completa.
Ejemplo: operación exitosa de migración sin advertencias [Esto es una traducción automática]
/subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => []} }
Si ve entradas de "advertencias de migración" en el registro, esto indica que la migración de la configuración del servidor se completó con éxito, pero no pudo migrar todos los elementos y atributos. Debe seguir las sugerencias proporcionadas por las "advertencias de migración" y ejecutar comandos de CLI de administración adicionales para modificar esas configuraciones. El siguiente es un ejemplo de
migrate
operación que devuelve "advertencias de migración".Ejemplo: migrar la operación con advertencias [Esto es una traducción automática]
/subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => [ "WFLYMSG0080: Could not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupB\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupB\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute local-bind-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute local-bind-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group." ]} }
NotaLa lista de
migrate
ydescribe-migration
advertencias para cada subsistema se encuentra en el Material de referencia al final de esta guía.- Advertencias de la operación de migración del subsistema Jacorb
- Advertencias de la operación de migración del subsistema de mensajería [Esto es una traducción automática]
- Advertencias de la operación de migración del subsistema de mensajería [Esto es una traducción automática]
Revise el archivo de configuración del servidor para verificar que la extensión, el subsistema y el espacio de nombres se actualizaron y la configuración del subsistema existente se migró a JBoss EAP 7.
NotaDebe repetir este proceso para cada uno de los
jacorb
,messaging
, yweb
subsistemas usando los siguientes comandos./subsystem=jacorb:migrate /subsystem=messaging:migrate /subsystem=web:migrate
Eliminar el
cmp
,jaxr
, ythreads
subsistemas y extensiones de la configuración del servidor.Mientras aún está en el indicador de CLI de administración, elimine el obsoleto
cmp
,jaxr
, ythreads
subsistemas mediante la ejecución de los siguientes comandos./subsystem=cmp:remove /extension=org.jboss.as.cmp:remove /subsystem=jaxr:remove /extension=org.jboss.as.jaxr:remove /subsystem=threads:remove /extension=org.jboss.as.threads:remove
Debe migrar el messaging
, jacorb
, y web
subsistemas y eliminar el cmp
, jaxr
, y threads
extensiones y subsistemas antes de que pueda reiniciar el servidor para una operación normal. Si necesita reiniciar el servidor antes de completar este proceso, asegúrese de incluir --start-mode=admin-only
argumento en la línea de comando de inicio del servidor. Esto le permite continuar con los cambios de configuración.
4.4. Cambios de registro [Esto es una traducción automática]
4.4.1. Cambios en el prefijo del mensaje de registro [Esto es una traducción automática]
Los mensajes de registro están prefijados con el código de proyecto para el subsistema que informa el mensaje. Los prefijos de todos los mensajes de registro han cambiado en JBoss EAP 7.
Para obtener una lista completa de los nuevos prefijos de código de proyecto de mensaje de registro utilizados en JBoss EAP 7, consulte Códigos de proyecto utilizados en JBoss EAP en el JBoss EAP Guía de desarrollo.
4.4.2. Cambios en el controlador de consola de Root Logger [Esto es una traducción automática]
El registrador de raíz JBoss EAP 7.0 incluía un controlador de registro de consola para todos los perfiles de servidor de dominio y para todos los perfiles independientes predeterminados, excepto el standalone-full-ha
perfil. El registrador de raíz JBoss EAP 7.1 ya no incluye un controlador de registro de consola para los perfiles de dominio administrado. El controlador de host y el controlador de proceso se conectan a la consola de forma predeterminada. Para lograr la misma funcionalidad que se proporcionó en JBoss EAP 7.0, consulte Configurar un controlador de registro de consola en el Guía de configuración para JBoss EAP.
4.5. Cambios en la configuración del servidor web [Esto es una traducción automática]
4.5.1. Reemplace el subsistema web con Undertow [Esto es una traducción automática]
Undertow reemplaza a JBoss Web como el servidor web en JBoss EAP 7. Esto significa que el legado web
la configuración del subsistema debe migrarse al nuevo JBoss EAP 7 undertow
configuración del subsistema
-
los
urn:jboss:domain:web:2.2
El espacio de nombre de configuración del subsistema en el archivo de configuración del servidor ha sido reemplazado porurn:jboss:domain:undertow:4.0
espacio de nombres -
los
org.jboss.as.web
módulo de extensión, ubicado enEAP_HOME/modules/system/layers/base/
, ha sido reemplazado conorg.wildfly.extension.undertow
módulo de extensión.
Puede usar la CLI de administración migrate
operación para migrar el web
subsistema a undertow
en el archivo de configuración del servidor. Sin embargo, tenga en cuenta que esta operación no puede migrar todas las configuraciones del subsistema web de JBoss. Si ve entradas de "advertencia de migración", debe ejecutar comandos de CLI de administración adicionales para migrar esas configuraciones a Undertow. Para obtener más información acerca de la CLI de administración migrate
operación, ver Gestión de la migración de la CLI Operación.
El siguiente es un ejemplo de lo predeterminado web
Configuración del subsistema en JBoss EAP 6.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> <virtual-server name="default-host" enable-welcome-root="true"> <alias name="localhost"/> <alias name="example.com"/> </virtual-server> </subsystem>
El siguiente es un ejemplo de lo predeterminado undertow
configuración del subsistema en JBoss EAP 7.
<subsystem xmlns="urn:jboss:domain:undertow:4.0"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" socket-binding="http" redirect-socket="https"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> <servlet-container name="default"> <jsp-config/> <websockets/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/> <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> </filters> </subsystem>
4.5.2. Migrar las condiciones de reescritura de JBoss Web [Esto es una traducción automática]
La CLI de gestión migrate
la operación no puede migrar automáticamente las condiciones de reescritura. Se informan como "advertencias de migración" y debe migrarlas manualmente. Puede crear la configuración equivalente en JBoss EAP 7 utilizando Undertow predice los atributos y manipuladores.
El siguiente es un ejemplo de web
configuración del subsistema en JBoss EAP 6 que incluye rewrite
configuración.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default" native="false"> <virtual-server name="default" enable-welcome-root="true"> <alias name="localhost"/> <rewrite name="test" pattern="(.*)/toberewritten/(.*)" substitution="$1/rewritten/$2" flags="NC"/> <rewrite name="test2" pattern="(.*)" substitution="-" flags="F"> <condition name="get" test="%{REQUEST_METHOD}" pattern="GET"/> <condition name="andCond" test="%{REQUEST_URI}" pattern=".*index.html" flags="NC"/> </rewrite> </virtual-server> </subsystem>
Siga el Gestión de la migración de la CLI Operación instrucciones para iniciar su servidor y la CLI de administración, luego migre el web
archivo de configuración del subsistema usando el siguiente comando.
/subsystem=web:migrate
Las siguientes "advertencias de migración" se informan cuando ejecuta el migrate
operación en la configuración anterior.
/subsystem=web:migrate { "outcome" => "success", "result" => {"migration-warnings" => [ "WFLYWEB0002: Could not migrate resource { \"pattern\" => \"(.*)\", \"substitution\" => \"-\", \"flags\" => \"F\", \"operation\" => \"add\", \"address\" => [ (\"subsystem\" => \"web\"), (\"virtual-server\" => \"default-host\"), (\"rewrite\" => \"test2\") ] }", "WFLYWEB0002: Could not migrate resource { \"test\" => \"%{REQUEST_METHOD}\", \"pattern\" => \"GET\", \"flags\" => undefined, \"operation\" => \"add\", \"address\" => [ (\"subsystem\" => \"web\"), (\"virtual-server\" => \"default-host\"), (\"rewrite\" => \"test2\"), (\"condition\" => \"get\") ] }", "WFLYWEB0002: Could not migrate resource { \"test\" => \"%{REQUEST_URI}\", \"pattern\" => \".*index.html\", \"flags\" => \"NC\", \"operation\" => \"add\", \"address\" => [ (\"subsystem\" => \"web\"), (\"virtual-server\" => \"default-host\"), (\"rewrite\" => \"test2\"), (\"condition\" => \"andCond\") ] }" ]} }
Revise el archivo de configuración del servidor y verá la siguiente configuración para undertow
subsistema.
Configuración del lado del servidor y carga de clases [Esto es una traducción automática]
<subsystem xmlns="urn:jboss:domain:undertow:4.0"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="http" socket-binding="http"/> <host name="default-host" alias="localhost, example.com"> <location name="/" handler="welcome-content"/> </host> </server> <servlet-container name="default"> <jsp-config/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> </subsystem>
Use la CLI de administración para crear el filtro para reemplazar la configuración de reescritura en el undertow
subsistema. Debería ver "{" resultado "⇒" success "}" para cada comando.
# Create the filters /subsystem=undertow/configuration=filter/expression-filter="test1":add(expression="path('(.*)/toberewritten/(.*)') -> rewrite('$1/rewritten/$2')") /subsystem=undertow/configuration=filter/expression-filter="test2":add(expression="method('GET') and path('.*index.html') -> response-code(403)") # Add the filters to the default server /subsystem=undertow/server=default-server/host=default-host/filter-ref="test1":add /subsystem=undertow/server=default-server/host=default-host/filter-ref="test2":add
Revise el archivo de configuración del servidor actualizado. El subsistema web JBoss ahora se migró completamente y se configuró en undertow
subsistema.
<subsystem xmlns="urn:jboss:domain:undertow:4.0"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="http" socket-binding="http"/> <host name="default-host" alias="localhost, example.com"> <location name="/" handler="welcome-content"/> <filter-ref name="test1"/> <filter-ref name="test2"/> </host> </server> <servlet-container name="default"> <jsp-config/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <expression-filter name="test1" expression="path('(.*)/toberewritten/(.*)') -> rewrite('$1/rewritten/$2')"/> <expression-filter name="test2" expression="method('GET') and path('.*index.html') -> response-code(403)"/> </filters> </subsystem>
Para obtener más información acerca de cómo configurar filtros y controladores mediante CLI de administración, consulte Configurar el servidor web en el JBoss EAP 7 Guía de configuración.
4.5.3. Migrar las propiedades del sistema web de JBoss [Esto es una traducción automática]
En el lanzamiento anterior de JBoss EAP, las propiedades del sistema se podían usar para modificar el comportamiento predeterminado de JBoss Web. Para obtener información sobre cómo configurar el mismo comportamiento en Undertow, consulte Referencia de migración de propiedades del sistema web JBoss
4.5.4. Actualizar el patrón de encabezado del registro de acceso [Esto es una traducción automática]
Cuando migra de JBoss EAP 6.4 a JBoss EAP 7.1, puede encontrar que los registros de acceso ya no escriben los valores esperados de "Referer" y "User-agent". Esto se debe a que JBoss Web, que se incluyó en JBoss EAP 6.4, utilizó un patrón de %{headername}i
en el access-log
para registrar un encabezado entrante.
Ejemplo: Formato de registro de acceso en JBoss EAP 6.4 [Esto es una traducción automática]
<access-log pattern="%h %l %u %t "%T sec" "%r" %s %b "%{Referer}i" "%{User-agent}i""/>
Con el cambio para usar Undertow en JBoss EAP 7.1, el patrón para un encabezado entrante ha cambiado a %{i,headername}
.
Ejemplo: acceso al encabezado del formato en JBoss EAP 7.1 [Esto es una traducción automática]
<access-log pattern="%h %l %u %t "%T sec" "%r" %s %b "%{i,Referer}" "%{i,User-Agent}""/>
4.5.5. Migrar válvulas globales [Esto es una traducción automática]
Versiones anteriores de válvulas compatibles con JBoss EAP. Las válvulas son clases personalizadas insertadas en la interconexión de procesamiento de solicitudes para una aplicación antes de filtros de servlets para realizar cambios en la solicitud o realizar un procesamiento adicional.
- Las válvulas globales se insertan en la canalización de procesamiento de solicitud de todas las aplicaciones desplegadas y se configuran en el archivo de configuración del servidor.
- Las válvulas del autenticador autentican las credenciales de la solicitud.
-
Las válvulas de aplicación personalizadas se crearon al extender el
org.apache.catalina.valves.ValveBase
clase y configurado en el<valve>
elemento de lajboss-web.xml
archivo descriptor. Estas válvulas deben migrarse manualmente.
Esta sección describe cómo migrar las válvulas globales. La migración de válvulas personalizadas y autenticadoras están cubiertas en Migrar válvulas de aplicaciones personalizadas sección de esta guía.
Undertow, que reemplaza a JBoss Web en JBoss EAP 7, no admite válvulas globales; sin embargo, debe poder lograr una funcionalidad similar mediante el uso de controladores Undertow. Undertow incluye una serie de controladores incorporados que proporcionan una funcionalidad común. También proporciona la capacidad de crear controladores personalizados, que se pueden usar para reemplazar la funcionalidad de válvula personalizada.
Si su aplicación usa válvulas, debe reemplazarlas con el código del controlador Undertow apropiado para lograr la misma funcionalidad cuando migre a JBoss EAP 7.
Para obtener más información sobre cómo configurar controladores, consulte Configurando Manejadores en el JBoss EAP 7 Guía de configuración.
Para obtener más información acerca de cómo configurar filtros, consulte Configurar filtros en el JBoss EAP 7 Guía de configuración.
Migrar válvulas globales [Esto es una traducción automática]
La siguiente tabla enumera las válvulas proporcionadas por JBoss Web en la versión anterior de JBoss EAP y el correspondiente controlador integrado de Undertow. Las válvulas JBoss Web están ubicadas en el org.apache.catalina.valves
paquete.
Tabla 4.2. Asignación de válvulas a manipuladores [Esto es una traducción automática]
Válvula | Controlador |
---|---|
AccessLogValve |
io.undertow.server.handlers.accesslog.AccessLogHandler |
CrawlerSessionManagerValve |
io.undertow.servlet.handlers.CrawlerSessionManagerHandler |
ExtendedAccessLogValve |
io.undertow.server.handlers.accesslog.AccessLogHandler |
JDBCAccessLogValve |
Ver el |
RemoteAddrValve |
io.undertow.server.handlers.IPAddressAccessControlHandler |
RemoteHostValve |
io.undertow.server.handlers.AccessControlListHandler |
RemoteIpValve |
io.undertow.server.handlers.ProxyPeerAddressHandler |
RequestDumperValve |
io.undertow.server.handlers.RequestDumpingHandler |
RewriteValve |
Ver Migrar las condiciones de reescritura de JBoss Web para obtener instrucciones para migrar estas válvulas manualmente. |
StuckThreadDetectionValve |
io.undertow.server.handlers.StuckThreadDetectionHandler |
Puede usar la CLI de administración migrate
operación para migrar automáticamente válvulas globales que cumplan los siguientes criterios:
- Están limitados a las válvulas enumeradas en la tabla anterior que no requieren procesamiento manual.
-
Deben definirse en el
web
subsistema del archivo de configuración del servidor.
Para obtener más información acerca de la CLI de administración migrate
operación, ver Gestión de la migración de la CLI Operación.
JDBCAccessLogValve Procedimiento de migración manual
los org.apache.catalina.valves.JDBCAccessLogValve
la válvula es una excepción a la regla y no se puede migrar automáticamente a io.undertow.server.handlers.JDBCLogHandler
. Siga los pasos a continuación para migrar la siguiente válvula de ejemplo.
<valve name="jdbc" module="org.jboss.as.web" class-name="org.apache.catalina.valves.JDBCAccessLogValve"> <param param-name="driverName" param-value="com.mysql.jdbc.Driver" /> <param param-name="connectionName" param-value="root" /> <param param-name="connectionPassword" param-value="password" /> <param param-name="connectionURL" param-value="jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull" /> <param param-name="format" param-value="combined" /> </valve>
- Cree un módulo de controlador para la base de datos que almacenará las entradas de registro.
Configure el origen de datos para la base de datos y agregue el controlador a la lista de controladores disponibles en el
datasources
subsistema.<datasources> <datasource jndi-name="java:jboss/datasources/accessLogDS" pool-name="accessLogDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull</connection-url> <driver>mysql</driver> <security> <user-name>root</user-name> <password>Password1!</password> </security> </datasource> ... <drivers> <driver name="mysql" module="com.mysql"> <driver-class>com.mysql.jdbc.Driver</driver-class> </driver> ... </drivers> </datasources>
Configurar un
expression-filter
en elundertow
subsistema con la siguiente expresión:jdbc-access-log(datasource=DATASOURCE_JNDI_NAME)
.<filters> <expression-filter name="jdbc-access" expression="jdbc-access-log(datasource='java:jboss/datasources/accessLogDS')" /> ... </filters>
4.5.6. Cambios en el comportamiento Set-Cookie [Esto es una traducción automática]
Especificaciones anteriores para Set-Cookie
La sintaxis del encabezado de respuesta HTTP, por ejemplo RFC2109 y RFC2965, permitía espacios en blanco y otros caracteres separadores en el valor de la cookie cuando se citaba el valor de la cookie. JBoss Web en JBoss EAP 6.4 cumplió con las especificaciones anteriores y citó automáticamente un valor de cookie cuando contenía cualquier carácter separador.
los RFC6265 especificación para Set-Cookie
La sintaxis del encabezado de respuesta HTTP indica que los valores de las cookies en el Set-Cookie
El encabezado de respuesta debe ajustarse a las restricciones de gramática específicas. Por ejemplo, deben ser caracteres US-ASCII, pero no pueden incluir CTRL (controles), espacios en blanco, comillas dobles, comas, puntos y comas o caracteres de barra diagonal inversa.
En JBoss EAP 7.0, antes del parche acumulativo Red Hat JBoss Enterprise Application Platform 7.0 Actualización 08, Undertow no restringe estos caracteres no válidos y no cita las cookies que contenían los caracteres excluidos. Si aplica este parche acumulativo o un parche acumulativo más reciente, puede habilitar la validación de cookies conforme con RFC6265 configurando el io.undertow.cookie.DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION
propiedad del sistema a true
.
En JBoss EAP 7.1, de forma predeterminada, Undertow no habilita la validación de cookies conforme con RFC6265. Cita cookies que contienen los caracteres excluidos. En JBoss EAP 7.1, no puede usar el io.undertow.cookie.DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION
propiedad del sistema para habilitar la validación de cookies conforme con RFC6265. En su lugar, habilita la validación de cookies conforme a RFC6265 para un oyente HTTP, HTTPS o AJP configurando el rfc6265-cookie-validation
atributo del oyente a true
. El valor predeterminado para este atributo es false
. El siguiente ejemplo habilita la validación de cookies compatibles con RFC6265 para el escucha HTTP.
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=rfc6265-cookie-validation,value=true)
4.5.7. Cambios en el comportamiento de llamada del método HTTP [Esto es una traducción automática]
JBoss EAP 6.4, que incluía JBoss Web como servidor web, permitió HTTP TRACE
método llamadas por defecto.
Undertow, que reemplaza a JBoss Web como servidor web en JBoss EAP 7, no permite HTTP TRACE
método llamadas por defecto. Esta configuración se configura usando el disallowed-methods
atributo de la http-listener
elemento en el undertow
subsistema. Esto se puede confirmar revisando el resultado de la siguiente read-resource
mando. Tenga en cuenta que el valor para el disallowed-methods
atributo es ["TRACE"]
.
/subsystem=undertow/server=default-server/http-listener=default:read-resource { "outcome" => "success", "result" => { "allow-encoded-slash" => false, "allow-equals-in-cookie-value" => false, "always-set-keep-alive" => true, "buffer-pipelined-data" => false, "buffer-pool" => "default", "certificate-forwarding" => false, "decode-url" => true, "disallowed-methods" => ["TRACE"], ... } }
Para habilitar HTTP TRACE
llamadas de método en JBoss EAP 7 y posteriores, debe eliminar la entrada "TRACE" del disallowed-methods
lista de atributos ejecutando el siguiente comando.
/subsystem=undertow/server=default-server/http-listener=default:list-remove(name=disallowed-methods,value="TRACE")
Cuando ejecutas el read-resource
comando nuevamente, notará el TRACE
la llamada al método ya no se encuentra en la lista de métodos no permitidos.
/subsystem=undertow/server=default-server/http-listener=default:read-resource { "outcome" => "success", "result" => { "allow-encoded-slash" => false, "allow-equals-in-cookie-value" => false, "always-set-keep-alive" => true, "buffer-pipelined-data" => false, "buffer-pool" => "default", "certificate-forwarding" => false, "decode-url" => true, "disallowed-methods" => [], ... } }
Para obtener más información sobre el comportamiento predeterminado de los métodos HTTP, consulte Comportamiento predeterminado de los métodos HTTP en el JBoss EAP Guía de configuración.
4.5.8. Cambios en el comportamiento del módulo web predeterminado en JBoss EAP 7.1 [Esto es una traducción automática]
En JBoss EAP 7.0, el contexto raíz de una aplicación web estaba deshabilitado por defecto en mod_cluster.
Este ya no es el caso en JBoss EAP 7.1. Esto puede tener consecuencias inesperadas si espera que el contexto raíz esté deshabilitado. Por ejemplo, las solicitudes pueden encaminarse erróneamente a nodos no deseados o una aplicación privada que no debe estar expuesta puede ser accesible inadvertidamente a través de un proxy público. Las ubicaciones de retroceso también ahora están registradas con el equilibrador de carga mod_cluster automáticamente a menos que estén explícitamente excluidas.
Use el siguiente comando CLI de administración para excluir ROOT del modcluster
configuración del subsistema
/subsystem=modcluster/mod-cluster-config=configuration:write-attribute(name=excluded-contexts,value=ROOT)
Utilice el siguiente comando CLI de administración para deshabilitar la aplicación web de bienvenida predeterminada.
/subsystem=undertow/server=default-server/host=default-host/location=\/:remove /subsystem=undertow/configuration=handler/file=welcome-content:remove reload
Para obtener más información sobre cómo configurar la aplicación web de bienvenida predeterminada, consulte Configurar la aplicación web de bienvenida predeterminada en el Guía de desarrollo para JBoss EAP.
4.6. Cambios en la configuración del servidor JGroups [Esto es una traducción automática]
4.6.1. JGroups se predetermina a una interfaz de red privada [Esto es una traducción automática]
En la configuración predeterminada de JBoss EAP 6, JGroups utilizó el public
interfaz definida en el <interfaces>
sección del archivo de configuración del servidor.
Debido a que es una práctica recomendada utilizar una interfaz de red dedicada, JGroups ahora usa por defecto el nuevo private
interfaz que se define en el <interfaces>
sección del archivo de configuración del servidor en JBoss EAP 7.
4.6.2. Cambios de canales de JGroups [Esto es una traducción automática]
JGroups proporciona soporte de comunicación grupal para servicios de HA en forma de canales de JGroups. JBoss EAP 7 presenta <channel>
elementos a la jgroups
subsistema en el archivo de configuración del servidor. Puede agregar, eliminar o cambiar la configuración de los canales de JGroups utilizando la CLI de administración.
Para obtener más información acerca de cómo configurar JGroups, consulte Comunicación de clúster con JGroups en el JBoss EAP Guía de configuración.
4.7. Cambios en la configuración del servidor Infinispan [Esto es una traducción automática]
4.7.1. Cambios en la configuración de caché predeterminada de Infinispan [Esto es una traducción automática]
En JBoss EAP 6, los cachés agrupados por defecto para la replicación de sesión web y la replicación EJB se replicaron ASYNC
cachés Esto ha cambiado en JBoss EAP 7. Los cachés agrupados por defecto están ahora distribuidos ASYNC
cachés Los cachés replicados ya no están configurados de manera predeterminada. Ver Configurar el modo de caché en el JBoss EAP Guía de configuración para obtener información acerca de cómo agregar un caché replicado y hacerlo predeterminado.
Esto solo lo afecta cuando usa la nueva configuración predeterminada de JBoss EAP 7. Si migra la configuración de JBoss EAP 6, la configuración de infinispan
subsistema será preservado.
4.7.2. Cambios en la estrategia de caché Infinispan [Esto es una traducción automática]
El comportamiento de ASYNC
la estrategia de caché ha cambiado en JBoss EAP 7.
En JBoss EAP 6, ASYNC
las lecturas de caché estaban libres de bloqueo. Aunque nunca bloquearían, eran propensos a lecturas sucias de datos obsoletos, por ejemplo, en la conmutación por error. Esto se debe a que permitiría que las solicitudes posteriores para el mismo usuario se inicien antes de que se complete la solicitud anterior. Esta permisividad no es aceptable cuando se utiliza el modo distribuido, ya que los cambios en la topología del clúster pueden afectar la afinidad de la sesión y dar como resultado fácilmente datos obsoletos.
En JBoss EAP 7, ASYNC
las lecturas de caché requieren bloqueos. Como ahora bloquean nuevas solicitudes del mismo usuario hasta que finaliza la replicación anterior, se evitan las lecturas sucias.
4.7.3. Configuración de caché de beans de sesión de estado personalizado para pasivación [Esto es una traducción automática]
Tenga en cuenta las siguientes restricciones al configurar una memoria caché de sesión de estado con estado personalizado (SFSB) para la pasivación en JBoss EAP 7.1.
-
los
idle-timeout
atributo, que se configura eninfinispan
passivation-store
delejb3
subsistema, está en desuso en JBoss EAP 7.1. JBoss EAP 6.4 apoyó la pasivación ansiosa, pasivado según elidle-timeout
valor. JBoss EAP 7.1 admite pasivación lenta, pasivación cuando elmax-size
umbral se alcanza. -
En JBoss EAP 7.1, el nombre del clúster utilizado por el cliente EJB está determinado por el nombre real del clúster del canal, tal como se configuró en el
jgroups
subsistema. -
JBoss EAP 7.1 todavía le permite configurar el
max-size
atributo para controlar el umbral de pasivación. No debe configurar el desalojo o la expiración en la configuración de su caché EJB.
-
Debe configurar el desalojo utilizando el
max-size
atributo de lapassivation-store
en elejb3
subsistema. -
Debe configurar la caducidad utilizando el
@StatefulTimeout
anotación en el código fuente SFSB Java o especificando unstateful-timeout
valor en elejb-jar.xml
archivo.
-
Debe configurar el desalojo utilizando el
4.7.4. Cambios en el transporte de contenedor de caché Infinispan [Esto es una traducción automática]
Un cambio en el comportamiento entre JBoss EAP 7.0 y JBoss EAP 7.1 requiere que cualquier actualización del protocolo de transporte del contenedor de caché se realice en modo batch o utilizando un encabezado especial. Este cambio en el comportamiento también afecta las herramientas que se utilizan para administrar el servidor JBoss EAP.
El siguiente es un ejemplo de los comandos CLI de gestión utilizados para configurar el protocolo de transporte de contenedor de caché en JBoss EAP 7.0.
/subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC)
El siguiente es un ejemplo de los comandos CLI de administración necesarios para realizar la misma configuración en JBoss EAP 7.1. Tenga en cuenta que los comandos se ejecutan en modo por lotes.
batch /subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC) run-batch
Si prefiere no usar el modo por lotes, puede especificar el encabezado de operación allow-resource-service-restart=true
al definir el transporte. Tenga en cuenta que esto reinicia el servicio para que las operaciones surtan efecto y algunos servicios pueden dejar de funcionar hasta que se reinicie el servicio.
Si usa scripts para actualizar el protocolo de transporte del contenedor de caché, asegúrese de revisarlos y agregar el modo por lotes.
4.8. Cambios en la configuración del servidor EJB [Esto es una traducción automática]
No hay migrate
operación para el ejb3
subsistema, por lo que si usa la CLI de administración migrate
para actualizar sus otras configuraciones existentes de JBoss EAP 6.4, tenga en cuenta que ejb3
la configuración del subsistema no se migra. Porque la configuración de ejb3
El subsistema es ligeramente diferente en JBoss EAP 7.1 que en JBoss EAP 6.4, es posible que vea excepciones en el registro del servidor cuando despliegue sus aplicaciones EJB.
Si usa la herramienta de migración de servidores JBoss para actualizar su configuración de servidor, ejb3
el subsistema debería estar configurado correctamente y no debería aparecer ningún problema cuando implemente sus aplicaciones EJB. Para obtener información sobre cómo configurar y ejecutar la herramienta, consulte Uso de la herramienta de migración de servidores JBoss.
DuplicateServiceException en el registro del servidor [Esto es una traducción automática]
El seguimiento DuplicateServiceException
es causado por cambios de caché en JBoss EAP 7.
DuplicateServiceException en el registro del servidor [Esto es una traducción automática]
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: org.jboss.msc.service.StartException in service jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: Failed to start service ... Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.infinispan.ejb."mdb-1.0-SNAPSHOT.jar".config is already registered
Debe volver a configurar la memoria caché para resolver este error.
- Sigue las instrucciones para Inicie el servidor y la CLI de administración.
Emita los siguientes comandos para volver a configurar el almacenamiento en caché en
ejb3
subsistema./subsystem=ejb3/file-passivation-store=file:remove /subsystem=ejb3/cluster-passivation-store=infinispan:remove /subsystem=ejb3/passivation-store=infinispan:add(cache-container=ejb, max-size=10000) /subsystem=ejb3/cache=passivating:remove /subsystem=ejb3/cache=clustered:remove /subsystem=ejb3/cache=distributable:add(passivation-store=infinispan, aliases=[passivating, clustered])
4.9. Cambios en la configuración del servidor de mensajería [Esto es una traducción automática]
En JBoss EAP 7, ActiveMQ Artemis reemplaza a HornetQ como el proveedor de soporte JMS. Esta sección describe cómo migrar la configuración y los datos de mensajería relacionados.
4.9.1. Cambios en la configuración del servidor del subsistema de mensajería [Esto es una traducción automática]
los org.jboss.as.messaging
módulo de extensión, ubicado en EAP_HOME/modules/system/layers/base/
, ha sido reemplazado por org.wildfly.extension.messaging-activemq
módulo de extensión.
los urn:jboss:domain:messaging:3.0
El espacio de nombre de configuración del subsistema ha sido reemplazado por urn:jboss:domain:messaging-activemq:2.0
espacio de nombres
Cambios en la administración de JMX [Esto es una traducción automática]
En la mayoría de los casos, se hizo un esfuerzo para mantener los nombres de elementos y atributos lo más similares posibles a los utilizados en lanzamientos anteriores. La siguiente tabla enumera algunos de los cambios.
Tabla 4.3. Asignación de atributos de mensajería [Esto es una traducción automática]
Nombre de HornetQ | Nombre ActiveMQ |
---|---|
hornetq-server |
Servidor |
hornetq-serverType |
serverType |
conectores |
conector |
discovery-group-name |
discovery-group |
Las operaciones de gestión invocadas en el nuevo messaging-activemq
subsistema ha cambiado desde /subsystem=messaging/hornetq-server=
a /subsystem=messaging-activemq/server=
.
Puede migrar un JBoss EAP existente 6 messaging
configuración del subsistema a messaging-activemq
subsistema en un servidor JBoss EAP 7 invocando su migrate
operación.
/subsystem=messaging:migrate
Antes de ejecutar el migrate
operación, puede invocar el describe-migration
operación para revisar la lista de operaciones de administración que se realizarán para migrar del JBoss EAP existente 6 messaging
configuración del subsistema a messaging-activemq
subsistema en el servidor JBoss EAP 7.
/subsystem=messaging:describe-migration
los migrate
y describe-migration
las operaciones también muestran una lista de migration-warnings
para recursos o atributos que no se pueden migrar automáticamente.
Advertencias de la operación de migración del subsistema de mensajería [Esto es una traducción automática]
los describe-migration
y migrate
operaciones para el messaging
subsistema proporciona un argumento de configuración adicional. Si desea configurar la mensajería para permitir que los clientes heredados de JBoss EAP 6 se conecten al servidor JBoss EAP 7, puede agregar la booleana add-legacy-entries
argumento a la describe-migration
o migrate
operación de la siguiente manera.
/subsystem=messaging:describe-migration(add-legacy-entries=true) /subsystem=messaging:migrate(add-legacy-entries=true)
Si el argumento booleano add-legacy-entries
se establece en true
, el messaging-activemq
subsistema crea el legacy-connection-factory
recurso y agrega legacy-entries
al jms-queue
y jms-topic
recursos.
Si el argumento booleano add-legacy-entries
se establece en false
, no se crean recursos heredados en messaging-activemq
el subsistema y los clientes JMS heredados no podrán comunicarse con los servidores JBoss EAP 7. Este es el valor predeterminado.
Para obtener más información sobre la compatibilidad directa e inversa, consulte la Compatibilidad hacia atrás y adelante en Configurando la Mensajería para JBoss EAP.
Para obtener más información acerca de la CLI de administración migrate
y describe-migration
operaciones, ver Gestión de la migración de la CLI Operación.
Cambio en el comportamiento del atributo forward-when-no-consumers
El comportamiento de forward-when-no-consumers
atributo ha cambiado en JBoss EAP 7.
En JBoss EAP 6, cuando forward-when-no-consumers
fue configurado para false
y no había consumidores en un clúster, los mensajes se redistribuyeron a todos los nodos de un clúster.
Este comportamiento ha cambiado en JBoss EAP 7. Cuando forward-when-no-consumers
se establece en false
y no hay consumidores en un clúster, los mensajes no se redistribuyen. En cambio, se mantienen en el nodo original al que se enviaron.
Cambio en la política de equilibrio de carga del clúster predeterminado
La política de equilibrio de carga del clúster predeterminada ha cambiado en JBoss EAP 7.
En JBoss EAP 6, la política de equilibrio de carga del clúster por defecto era similar a STRICT
, que es como establecer el legado forward-when-no-consumers
parámetro a true
. En JBoss EAP 7, el valor predeterminado es ahora ON_DEMAND
, que es como establecer el legado forward-when-no-consumers
parámetro a false
. Para obtener más información acerca de estas configuraciones, consulte Atributos de conexión de clúster en Configurando la Mensajería para JBoss EAP.
Cambios en la configuración del servidor del subsistema de mensajería [Esto es una traducción automática]
La configuración XML ha cambiado significativamente con el nuevo messaging-activemq
subsistema, y ahora proporciona un esquema XML más consistente con otros subsistemas JBoss EAP.
Se recomienda encarecidamente que no intente modificar JBoss EAP messaging
configuración XML del subsistema para ajustarse a la nueva messaging-activemq
subsistema. En cambio, invoque el subsistema heredado migrate
operación. Esta operación escribirá la configuración XML del nuevo messaging-activemq
subsistema como parte de su ejecución.
4.9.2. Migrar datos de mensajería [Esto es una traducción automática]
Puede usar uno de los siguientes enfoques para migrar los datos de mensajería de una versión anterior a la versión actual de JBoss EAP.
-
Para sistemas de mensajería basados en archivos, puede migrar datos de mensajería desde JBoss EAP 6.4 o desde JBoss EAP 7.0 a JBoss EAP 7.1. usando el método de exportación e importación. Con este método, puede exportar los datos de mensajería de la versión anterior e importarlos mediante la CLI de administración.
import-journal
operación. Tenga en cuenta que puede usar este enfoque solo para sistemas de mensajería basados en archivos. - Puede migrar datos de mensajería de JBoss EAP 6.4 a JBoss EAP 7.1 por configurar un puente JMS. Puede usar este enfoque tanto para sistemas de mensajería basados en archivos como JDBC.
Debido al cambio de HornetQ a ActiveMQ Artemis como proveedor de soporte JMS, tanto el formato como la ubicación de los datos de mensajería cambiaron en JBoss EAP 7.0 y posterior. Ver Asignación de nombres de carpeta de mensajería para detalles de los cambios en los nombres y ubicaciones de las carpetas de datos de mensajería entre las versiones 6.4 y 7.x.
4.9.2.1. Migrar datos de mensajería mediante exportación e importación [Esto es una traducción automática]
Con este enfoque, exporta los datos de mensajería de una versión anterior a un archivo XML, y luego importa ese archivo usando el import-journal
operación.
Exportar los datos de mensajería a un archivo XML.
- Importe los datos de mensajería formateados en XML.
No puede usar el método de exportación e importación para mover datos de mensajería entre sistemas que usan un diario basado en JDBC para almacenamiento.
Ejemplo: Formato de registro de acceso en JBoss EAP 6.4 [Esto es una traducción automática]
Debido al cambio de HornetQ a ActiveMQ Artemis como proveedor de soporte JMS, tanto el formato como la ubicación de los datos de mensajería cambiaron en JBoss EAP 7.0 y posterior.
Para exportar datos de mensajería de JBoss EAP 6.4, debe usar HornetQ exporter
utilidad. El HornetQ exporter
la utilidad genera y exporta los datos de mensajería de JBoss EAP 6.4 a un archivo XML. Este comando requiere que especifique las rutas a los JAR HornetQ requeridos que se enviaron con JBoss EAP 6.4, pase las rutas a messagingbindings/
, messagingjournal/
, messagingpaging/
, y messaginglargemessages/
carpetas de la versión anterior como argumentos, y especifique un archivo de salida en el que escribir los datos XML exportados.
La siguiente es la sintaxis requerida por HornetQ exporter
utilidad.
$ java -jar -mp MODULE_PATH org.hornetq.exporter MESSAGING_BINDINGS_DIRECTORY MESSAGING_JOURNAL_DIRECTORY MESSAGING_PAGING_DIRECTORY MESSAGING_LARGE_MESSAGES_DIRECTORY > OUTPUT_DATA.xml
Cree un módulo personalizado para garantizar que las versiones correctas de los JAR de HornetQ, incluidos los archivos JAR instalados con parches o actualizaciones, se carguen y estén disponibles para el exporter
utilidad. Usando su editor favorito, cree un nuevo module.xml
archivo en el EAP6_HOME/modules/org/hornetq/exporter/main/
directorio y copie el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.hornetq.exporter"> <main-class name="org.hornetq.jms.persistence.impl.journal.XmlDataExporter"/> <properties> <property name="jboss.api" value="deprecated"/> </properties> <dependencies> <module name="org.hornetq"/> </dependencies> </module>
El módulo personalizado se crea en modules/
directorio, no el modules/system/layers/base/
directorio.
Siga los pasos a continuación para exportar los datos.
- Ejemplo: nombre del controlador JBoss EAP 6 [Esto es una traducción automática]
- Crea el módulo personalizado como se describe arriba.
Ejecute el siguiente comando para exportar los datos.
$ java -jar jboss-modules.jar -mp modules/ org.hornetq.exporter standalone/data/messagingbindings/ standalone/data/messagingjournal/ standalone/data/messagingpaging standalone/data/messaginglargemessages/ > OUTPUT_DIRECTORY/OldMessagingData.xml
- Asegúrese de que no haya errores o mensajes de advertencia en el registro al finalizar el comando.
- Use herramientas disponibles para su sistema operativo para validar el XML en el archivo de salida generado.
Cambios en la configuración de mensajería en JBoss EAP 7.1 [Esto es una traducción automática]
Siga estos pasos para exportar datos de mensajería de JBoss EAP 7.0.
Abra una terminal, vaya al directorio de instalación de JBoss EAP 7.0 e inicie el servidor en
admin-only
modo.$ EAP_HOME/bin/standalone.sh -c standalone-full.xml --start-mode=admin-only
Abra una nueva terminal, vaya al directorio de instalación de JBoss EAP 7.0 y conéctese a la CLI de administración.
$ EAP_HOME/bin/jboss-cli.sh --connect
Use el siguiente comando CLI de administración para exportar los datos del diario de mensajería.
/subsystem=messaging-activemq/server=default:export-journal()
- Asegúrese de que no haya errores o mensajes de advertencia en el registro al finalizar el comando.
- Use herramientas disponibles para su sistema operativo para validar el XML en el archivo de salida generado.
Migrar datos de mensajería [Esto es una traducción automática]
A continuación, importe el archivo XML en JBoss EAP 7.0 o posterior utilizando el import-journal
operación de la siguiente manera.
Si su servidor de destino ya ha realizado algunas tareas de mensajería, asegúrese de hacer una copia de seguridad de sus carpetas de mensajería antes de comenzar el import-journal
operación para evitar la pérdida de datos en caso de una falla de importación. Ver Copia de seguridad de los datos de la carpeta de mensajería para más información.
- Si está migrando su servidor JBoss EAP 6.4 a 7.1, asegúrese de haber completado la migración de la configuración del servidor antes de comenzar utilizando el operación de migración CLI de gestión o ejecutando la herramienta de migración de servidores JBoss. Para obtener información sobre cómo configurar y ejecutar la herramienta, consulte Uso de la herramienta de migración de servidores JBoss.
Inicie el servidor JBoss EAP 7.x en modo normal con no Clientes JMS conectados.
ImportanteEs importante que inicie el servidor sin clientes JMS conectados. Esto es porque el
import-journal
la operación se comporta como un productor JMS. Los mensajes están disponibles de inmediato cuando la operación está en progreso. Si esta operación falla en el medio de la importación y los clientes JMS están conectados, no hay forma de recuperarlos porque los clientes JMS podrían haber consumido algunos de los mensajes.Abra una nueva terminal, vaya al directorio de instalación de JBoss EAP 7.x y conéctese a la CLI de administración.
$ EAP_HOME/bin/jboss-cli.sh --connect
Use el siguiente comando CLI de administración para importar los datos de mensajería.
/subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)
ImportanteHacer no ¡ejecute este comando más de una vez, ya que al hacerlo se generarán mensajes duplicados!
AvisoSi está utilizando JBoss EAP 7.0, debe solicitar Red Hat JBoss Enterprise Application Platform 7.0 Actualización 05 o un parche acumulativo más reciente para su instalación de JBoss EAP para evitar un problema conocido al leer mensajes grandes. Para más información, ver JBEAP-4407: bloqueos del consumidor con IndexOutOfBoundsException al leer mensajes grandes del diario importado. Este problema no afecta a JBoss EAP 7.1 o posterior.
Recuperación de una falla de importación de datos de mensajería
Si el import-journal
la operación falla, puede intentar recuperar utilizando los siguientes pasos.
- Cierre el servidor JBoss EAP 7.x.
- Eliminar todas las carpetas del diario de mensajes. Ver Copia de seguridad de los datos de la carpeta de mensajería para los comandos CLI de administración para determinar la ubicación de directorio correcta para las carpetas de diario de mensajería.
- Si realizó una copia de seguridad de los datos de mensajería del servidor de destino antes de la importación, copie las carpetas de mensajería de la ubicación de la copia de seguridad al directorio de diario de mensajería determinado en el paso anterior.
- Repita los pasos para importar los datos de mensajería con formato XML.
4.9.2.2. Migrar datos de mensajería utilizando un puente JMS [Esto es una traducción automática]
Usando este enfoque, configura e implementa un puente JMS al servidor JBoss EAP 7.x. El puente JMS mueve los mensajes de la cola JBoss EAP 6.4 HornetQ a la cola JBoss EAP 7.x ActiveMQ Artemis.
Un puente JMS consume mensajes desde un tema o cola JMS fuente y los envía al tema o cola JMS destino, el cual usualmente se encuentra en un servidor diferente. Se puede utilizar como puente para los mensajes entre cualquier servidor JMS en tanto cumplan con los requerimientos de JMS 1.1. Los recursos JMS de destino y fuente se buscan utilizando JNDI y las clases clientes para la búsqueda JNDI se deben agrupan en un módulo. Luego el nombre del módulo se declara en la configuración del puente JMS.
Esta sección describe cómo configurar los servidores e implementar un puente JMS para mover los datos de mensajería de JBoss EAP 6.4 a JBoss EAP 7.x.
Configurar el servidor Source JBoss EAP 6.4
- Ejemplo: nombre del controlador JBoss EAP 6 [Esto es una traducción automática]
Haga una copia de seguridad del diario HornetQ y de los archivos de configuración.
-
Por defecto, el diario HornetQ se encuentra en el
EAP6_HOME/standalone/data/
directorio. - Ver Asignación de nombres de carpeta de mensajería para las ubicaciones predeterminadas de la carpeta de mensajes para cada versión.
-
Por defecto, el diario HornetQ se encuentra en el
-
Asegúrate de que
InQueue
La cola JMS que contiene los mensajes JMS está definida en el servidor JBoss EAP 6.4. Asegúrate de eso
messaging
La configuración del subsistema contiene una entrada paraRemoteConnectionFactory
similar al siguiente.<connection-factory name="RemoteConnectionFactory"> <entries> <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> </entries> ... </connection-factory>
Si no contiene la entrada, cree una con el siguiente comando de administración CLI:
/subsystem=messaging/hornetq-server=default/connection-factory=RemoteConnectionFactory:add(factory-type=XA_GENERIC, connector=[netty], entries=[java:jboss/exported/jms/RemoteConnectionFactory],ha=true,block-on-acknowledge=true,retry-interval=1000,retry-interval-multiplier=1.0,reconnect-attempts=-1)
Configurar el servidor JBoss EAP 7.x de destino
La configuración del puente JMS necesita
org.hornetq
módulo para conectarse al servidor HornetQ en la versión anterior. Este módulo y sus dependencias directas no están presentes en JBoss EAP 7.x, por lo que debe copiar los siguientes módulos de la versión anterior.Copia el
org.hornetq
módulo en el JBoss EAP 7.xEAP_HOME/modules/org/
directorio.-
Si no aplicó revisiones a este módulo, copie esta carpeta del servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/org/hornetq/
-
Si aplicó parches a este módulo, copie esta carpeta del servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/hornetq/
-
Si no aplicó revisiones a este módulo, copie esta carpeta del servidor JBoss EAP 6.4:
Eliminar el
<resource-root>
para el HornetQlib
ruta desde JBoss EAP 7.xEAP_HOME/modules/org/hornetq/main/module.xml
archivo.Si no aplicó parches a JBoss EAP 6.4
org.hornetq
módulo, elimine la siguiente línea del archivo:<resource-root path="lib"/>
Si aplicó parches a JBoss EAP 6.4
org.hornetq
módulo, elimine las siguientes líneas del archivo:<resource-root path="lib"/> <resource-root path="../../../../../org/hornetq/main/lib"/>
AvisoFallo al eliminar el HornetQ
lib
caminoresource-root
hará que el puente falle con el siguiente error en el archivo de registro.2016-07-15 09:32:25,660 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("add") failed - address: ([ ("subsystem" => "messaging-activemq"), ("jms-bridge" => "myBridge") ]) - failure description: "WFLYMSGAMQ0086: Unable to load module org.hornetq"
Copia el
org.jboss.netty
módulo en el JBoss EAP 7.xEAP_HOME/modules/org/jboss/
directorio.-
Si no aplicó revisiones a este módulo, copie esta carpeta del servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/org/jboss/netty/
-
Si aplicó parches a este módulo, copie esta carpeta del servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/jboss/netty
-
Si no aplicó revisiones a este módulo, copie esta carpeta del servidor JBoss EAP 6.4:
Cree la cola JMS para contener los mensajes recibidos del servidor JBoss EAP 6.4. El siguiente es un ejemplo de un comando CLI de administración que crea el
MigratedMessagesQueue
JMS pone en cola para recibir el mensaje.jms-queue add --queue-address=MigratedMessagesQueue --entries=[jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue]
Esto crea lo siguiente
jms-queue
configuración para el servidor predeterminado en elmessaging-activemq
subsistema del servidor JBoss EAP 7.x.<jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
Asegúrate de eso
messaging-activemq
subsistemadefault
servidor contiene una configuración para elInVmConnectionFactory
connection-factory
similar a lo siguiente:<connection-factory name="InVmConnectionFactory" factory-type="XA_GENERIC" entries="java:/ConnectionFactory" connectors="in-vm"/>
Si no contiene la entrada, cree una con el siguiente comando de administración CLI:
/subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(factory-type=XA_GENERIC, connectors=[in-vm], entries=[java:/ConnectionFactory])
Cree e implemente un puente JMS que lea mensajes del
InQueue
Cola JMS configurada en el servidor JBoss EAP 6.4 y la transfiere a laMigratedMessagesQueue
configurado en el servidor JBoss EAP 7.x./subsystem=messaging-activemq/jms-bridge=myBridge:add(add-messageID-in-header=true,max-batch-time=100,max-batch-size=10,max-retries=-1,failure-retry-interval=1000,quality-of-service=AT_MOST_ONCE,module=org.hornetq,source-destination=jms/queue/InQueue,source-connection-factory=jms/RemoteConnectionFactory,source-context=[("java.naming.factory.initial"=>"org.wildfly.naming.client.WildFlyInitialContextFactory"),("java.naming.provider.url"=>"remote://127.0.0.1:4447")],target-destination=jms/queue/MigratedMessagesQueue,target-connection-factory=java:/ConnectionFactory)
Esto crea lo siguiente
jms-bridge
configuración en elmessaging-activemq
subsistema del servidor JBoss EAP 7.x.<jms-bridge name="myBridge" add-messageID-in-header="true" max-batch-time="100" max-batch-size="10" max-retries="-1" failure-retry-interval="1000" quality-of-service="AT_MOST_ONCE" module="org.hornetq"> <source destination="jms/queue/InQueue" connection-factory="jms/RemoteConnectionFactory"> <source-context> <property name="java.naming.factory.initial" value="org.wildfly.naming.client.WildFlyInitialContextFactory"/> <property name="java.naming.provider.url" value="remote://127.0.0.1:4447"/> </source-context> </source> <target destination="jms/queue/MigratedMessagesQueue" connection-factory="java:/ConnectionFactory"/> </jms-bridge>
-
Si la seguridad está configurada para JBoss EAP 6.4, también debe configurar la configuración del puente JMS
<source>
elemento para incluir unsource-context
que especifica el nombre de usuario y la contraseña correctos para utilizar para la búsqueda JNDI al crear la conexión.
Migrar datos de mensajería [Esto es una traducción automática]
Verifique que la información que proporcionó para las siguientes configuraciones sea correcta.
- Cualquier cola y nombres de tema.
-
los
java.naming.provider.url
para búsqueda JNDI.
- Asegúrese de haber desplegado el destino JMS destino en el servidor JBoss EAP 7.x.
- Inicie los servidores JBoss EAP 6.4 y JBoss EAP 7.x.
4.9.2.3. Asignación de nombres de carpeta de mensajería [Esto es una traducción automática]
La siguiente tabla muestra los nombres de directorio de mensajería utilizados en la versión anterior y los nombres correspondientes utilizados en la versión actual de JBoss EAP. Los directorios son relativos a jboss.server.data.dir
directorio, que por defecto es EAP_HOME/standalone/data/
si no está especificado
Ejemplo: nombre del controlador JBoss EAP 6 [Esto es una traducción automática] | Ejemplo: nombre del controlador JBoss EAP 7 [Esto es una traducción automática] |
---|---|
|
|
|
|
|
|
|
|
los messaginglargemessages/
y messagingpaging/
Es posible que los directorios no estén presentes si no hay mensajes grandes o si la búsqueda está deshabilitada.
4.9.2.4. Copia de seguridad de los datos de la carpeta de mensajería [Esto es una traducción automática]
Si su servidor de destino ya ha procesado los mensajes, es una buena idea realizar una copia de seguridad de las carpetas de mensajes de destino en una ubicación de respaldo antes de comenzar. La ubicación predeterminada de las carpetas de mensajes es EAP_HOME/standalone/data/activemq/
; sin embargo, es configurable. Si no está seguro de la ubicación de sus datos de mensajería, puede usar los siguientes comandos CLI de administración para encontrar la ubicación de las carpetas de mensajería.
/subsystem=messaging-activemq/server=default/path=journal-directory:resolve-path /subsystem=messaging-activemq/server=default/path=paging-directory:resolve-path /subsystem=messaging-activemq/server=default/path=bindings-directory:resolve-path /subsystem=messaging-activemq/server=default/path=large-messages-directory:resolve-path
Una vez que sepa la ubicación de las carpetas, copie cada carpeta a una ubicación segura de respaldo.
4.9.3. Migrar destinos JMS [Esto es una traducción automática]
En versiones anteriores de JBoss EAP, las colas de destino JMS se configuraban en <jms-destinations>
elemento bajo el <hornetq-server>
elemento en el messaging
subsistema.
<hornetq-server> ... <jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> </jms-destinations> ... </hornetq-server>
En JBoss EAP 7, la cola de destino JMS está configurada de manera predeterminada <server>
elemento de la messaging-activemq
subsistema.
<server name="default"> ... <jms-queue name="testQueue" entries="queue/test java:jboss/exported/jms/queue/test"/> ... </server>
4.9.4. Migrar interceptores de mensajería [Esto es una traducción automática]
Los interceptores de mensajería han cambiado significativamente en JBoss EAP 7 con el reemplazo de HornetQ por ActiveMQ Artemis como proveedor de mensajería JMS.
El HornetQ messaging
El subsistema incluido en la versión anterior de JBoss EAP requiere que instales los interceptores HornetQ agregándolos a un JAR y luego modificando el HornetQ module.xml
archivo.
los messaging-activemq
subsistema incluido en JBoss EAP 7 no requiere la modificación de un module.xml
archivo. Clases de interceptor de usuario, que ahora implementan Apache ActiveMQ Artemis Interceptador interfaz, ahora se puede cargar desde cualquier módulo de servidor. Usted especifica el módulo desde el cual se debe cargar el interceptor en el messaging-activemq
subsistema del archivo de configuración del servidor.
Ejemplo: configuración del interceptor [Esto es una traducción automática]
<subsystem xmlns="urn:jboss:domain:messaging-activemq:2.0"> <server name="default"> ... <incoming-interceptors> <class name="com.mycompany.incoming.myInterceptor" module="com.mycompany" /> <class name="com.othercompany.incoming.myOtherInterceptor" module="com.othercompany" /> </incoming-interceptors> <outgoing-interceptors> <class name="com.mycompany.outgoing.myInterceptor" module="com.mycompany" /> <class name="com.othercompany.outgoing.myOtherInterceptor" module="com.othercompany" /> </outgoing-interceptors> </server> </subsystem>
4.9.5. Reemplazar la configuración del servlet de Netty [Esto es una traducción automática]
En JBoss EAP 6, puede configurar un motor de servlet para que funcione con el transporte de Netty Servlet. Debido a que ActiveMQ Artemis reemplaza a HornetQ como el proveedor de mensajería incorporado en JBoss EAP 7, esta configuración ya no está disponible. En su lugar, debe reemplazar la configuración de servlet para usar los nuevos conectores de mensajería HTTP incorporados y los aceptores HTTP.
4.9.6. Configuración de un adaptador de recursos JMS genérico [Esto es una traducción automática]
La forma en que configura un adaptador de recursos JMS genérico para usar con un proveedor JMS de terceros ha cambiado en JBoss EAP 7. Para obtener más información, consulte Implementación de un adaptador de recursos JMS genérico en Configurando la Mensajería para JBoss EAP.
4.9.7. Cambios en la configuración de mensajería en JBoss EAP 7.1 [Esto es una traducción automática]
En JBoss EAP 7.0, si configuró el replication-master
política sin especificar el check-for-live-server
atributo, su valor predeterminado era false
. Esto ha cambiado en JBoss EAP 7.1. El valor predeterminado para el check-for-live-server
atributo es ahora true
.
El siguiente es un ejemplo de un comando CLI de administración que configura el replication-master
política sin especificar el check-for-live-server
atributo.
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:add(cluster-name=my-cluster,group-name=group1)
Cuando lea el recurso utilizando la CLI de administración, tenga en cuenta que check-for-live-server
el valor de atributo está configurado para true
.
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:read-resource(recursive=true) { "outcome" => "success", "result" => { "check-for-live-server" => true, "cluster-name" => "my-cluster", "group-name" => "group1", "initial-replication-sync-timeout" => 30000L }, "response-headers" => {"process-state" => "reload-required"} }
4.9.8. Cambios en el comportamiento de serialización JMS entre releases [Esto es una traducción automática]
los serialVersionUID
de javax.jms.JMSException
cambiado entre JMS 1.1 y JMS 2.0.0. Esto significa que si una instancia de JMSException
, o cualquiera de sus subclases, se serializa usando JMS 1.1, no se puede deserializar usando JMS 2.0.0. Lo contrario también es cierto. Si una instancia de JMSException
se serializa usando JMS 2.0.0, no se puede deserializar usando JMS 1.1. En ambos casos, arroja una excepción similar a la siguiente:
javax.jms.JMSException: javax.jms.JMSException; clase local incompatible: stream classdesc serialVersionUID = 8951994251593378324, clase local serialVersionUID = 2368476267211489441
Este problema se corrigió en la versión de mantenimiento JMS 2.0.1.
Implementación de JMS para cada versión de JBoss EAP [Esto es una traducción automática]
Tabla 4.4. Implementación de JMS para cada versión de JBoss EAP [Esto es una traducción automática]
JBoss EAP Version | Implementación de JMS | La versión JMS |
---|---|---|
6.4 |
HornetQ |
JMS 1.1 |
7.0 |
Apache ActiveMQ Artemis |
JMS 2.0.0 |
7.1 |
Apache ActiveMQ Artemis |
JMS 2.0.1 |
Tenga en cuenta que serialVersionUID
la incompatibilidad puede generar un problema de migración en las siguientes situaciones:
-
Si envía un mensaje que contiene un
JMSException
utilizando un cliente JBoss EAP 6.4, migre sus datos de mensajería a JBoss EAP 7.0, y luego intente deserializar ese mensaje utilizando un cliente JBoss EAP 7.0, la deserialización fallará y arrojará una excepción. Esto es porque elserialVersionUID
en JMS 1.1 es no compatible con el de JMS 2.0.0. -
Si envía un mensaje que contiene un
JMSException
utilizando un cliente JBoss EAP 7.0, migre sus datos de mensajería a JBoss EAP 7.1, y luego intente deserializar ese mensaje utilizando un cliente JBoss EAP 7.1, la deserialización fallará y arrojará una excepción. Esto es porque elserialVersionUID
en JMS 2.0.0 es no compatible con el de JMS 2.0.1.
Tenga en cuenta que si envía un mensaje que contiene un JMSException
utilizando un cliente JBoss EAP 6.4, migre sus datos de mensajería a JBoss EAP 7.1, y luego intente deserializar ese mensaje utilizando un cliente JBoss EAP 7.1, la deserialización tendrá éxito porque la serialVersionUID
en JMS 1.1 es compatible con el de JMS 2.0.1.
Red Hat recomienda que haga lo siguiente antes de migrar sus datos de mensajería:
- Asegúrese de consumir todos los mensajes JMS 1.1 que contengan JMSExceptions antes de migrar los datos de mensajería de JBoss EAP 6.4 a JBoss EAP 7.0.
- Asegúrese de consumir todos los mensajes JMS 2.0.0 que contengan JMSExceptions antes de migrar los datos de mensajería de JBoss EAP 7.0 a JBoss EAP 7.1.
4.10. Cambios en la administración de JMX [Esto es una traducción automática]
El componente HornetQ en JBoss EAP 6 proporcionó su propia administración JMX; sin embargo, no fue recomendado y ahora está en desuso y ya no es compatible. Si confió en esta función en JBoss EAP 6, debe migrar sus herramientas de administración para usar la CLI de administración de JBoss EAP o la administración de JM proporcionada con JBoss EAP 7.
También debe actualizar sus bibliotecas de cliente para usar jboss-client.jar
que se envía con JBoss EAP 7.
El siguiente es un ejemplo del código de administración HornetQ JMX que se usó en JBoss EAP 6.
JMXConnector connector = null; try { HashMap environment = new HashMap(); String[] credentials = new String[]{"admin", "Password123!"}; environment.put(JMXConnector.CREDENTIALS, credentials); // HornetQ used the protocol "remoting-jmx" and port "9999" JMXServiceURL beanServerUrl = new JMXServiceURL("service:jmx:remoting-jmx://127.0.0.1:9999"); connector = JMXConnectorFactory.connect(beanServerUrl, environment); MBeanServerConnection mbeanServer = connector.getMBeanServerConnection(); // The JMX object name pointed to the HornetQ JMX management ObjectName objectName = new ObjectName("org.hornetq:type=Server,module=JMS"); // The invoked method name was "listConnectionIDs" String[] connections = (String[]) mbeanServer.invoke(objectName, "listConnectionIDs", new Object[]{}, new String[]{}); for (String connection : connections) { System.out.println(connection); } } finally { if (connector != null) { connector.close(); } }
El siguiente es un ejemplo del código equivalente necesario para ActiveMQ Artemis en JBoss EAP 7.
JMXConnector connector = null; try { HashMap environment = new HashMap(); String[] credentials = new String[]{"admin", "Password123!"}; environment.put(JMXConnector.CREDENTIALS, credentials); // ActiveMQ Artemis uses the protocol "remote+http" and port "9990" JMXServiceURL beanServerUrl = new JMXServiceURL("service:jmx:remote+http://127.0.0.1:9990"); connector = JMXConnectorFactory.connect(beanServerUrl, environment); MBeanServerConnection mbeanServer = connector.getMBeanServerConnection(); // The JMX object name points to the new JMX management in the `messaging-activemq` subsystem ObjectName objectName = new ObjectName("jboss.as:subsystem=messaging-activemq,server=default"); // The invoked method name is now "listConnectionIds" String[] connections = (String[]) mbeanServer.invoke(objectName, "listConnectionIds", new Object[]{}, new String[]{}); for (String connection : connections) { System.out.println(connection); } } finally { if (connector != null) { connector.close(); } }
Observe que los nombres y parámetros del método han cambiado en la nueva implementación. Puede encontrar los nuevos nombres de métodos en JConsole siguiendo estos pasos.
Conéctese a JConsole con el siguiente comando.
$ EAP_HOME/bin/jconsole.sh
- Conéctese al proceso local de JBoss EAP. Tenga en cuenta que debe comenzar con "jboss-modules.jar".
- En el MBeans pestaña, elegir jboss.as → mensajería-activemq → defecto → Operaciones para mostrar la lista de nombres y atributos de métodos.
4.11. Cambios en la configuración del servidor ORB [Esto es una traducción automática]
La implementación de JacORB ha sido reemplazada por una rama descendente de OpenJDK ORB en JBoss EAP 7.
los org.jboss.as.jacorb
módulo de extensión, ubicado en EAP_HOME/modules/system/layers/base/
, ha sido reemplazado por org.wildfly.iiop-openjdk
módulo de extensión.
los urn:jboss:domain:jacorb:1.4
El espacio de nombre de configuración del subsistema en el archivo de configuración del servidor ha sido reemplazado por urn:jboss:domain:iiop-openjdk:1.0
espacio de nombres
El siguiente es un ejemplo de lo predeterminado jacorb
configuración del sistema en JBoss EAP 6.
<subsystem xmlns="urn:jboss:domain:jacorb:1.4"> <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> <initializers security="identity" transactions="spec"/> </orb> </subsystem>
El siguiente es un ejemplo de lo predeterminado iiop-openjdk
configuración del subsistema en JBoss EAP 7.
<subsystem xmlns="urn:jboss:domain:iiop-openjdk:1.0"> <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl" /> <initializers security="identity" transactions="spec" /> </subsystem>
El nuevo iiop-openjdk
La configuración del subsistema solo acepta un subconjunto de los elementos y atributos heredados. El siguiente es un ejemplo de jacorb
configuración del subsistema en la versión anterior de JBoss EAP que contiene todos los elementos y atributos válidos:
<subsystem xmlns="urn:jboss:domain:jacorb:1.4"> <orb name="JBoss" print-version="off" use-imr="off" use-bom="off" cache-typecodes="off" cache-poa-names="off" giop-minor-version="2" socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> <connection retries="5" retry-interval="500" client-timeout="0" server-timeout="0" max-server-connections="500" max-managed-buf-size="24" outbuf-size="2048" outbuf-cache-timeout="-1"/> <initializers security="off" transactions="spec"/> </orb> <poa monitoring="off" queue-wait="on" queue-min="10" queue-max="100"> <request-processors pool-size="10" max-threads="32"/> </poa> <naming root-context="JBoss/Naming/root" export-corbaloc="on"/> <interop sun="on" comet="off" iona="off" chunk-custom-rmi-valuetypes="on" lax-boolean-encoding="off" indirection-encoding-disable="off" strict-check-on-tc-creation="off"/> <security support-ssl="off" add-component-via-interceptor="on" client-supports="MutualAuth" client-requires="None" server-supports="MutualAuth" server-requires="None"/> <properties> <property name="some_property" value="some_value"/> </properties> </subsystem>
Los siguientes atributos de elemento ya no son compatibles y deben eliminarse.
Tabla 4.5. Atributos para eliminar [Esto es una traducción automática]
Elemento | Atributos no admitidos |
---|---|
<orb> |
|
<poa> |
|
El seguimiento on/off
los atributos ya no son compatibles y no se migrarán cuando ejecute la CLI de administración migrate
operación. Si están configurados para on
, recibirá una advertencia de migración. Otro on/off
atributos que no se mencionan en esta tabla, por ejemplo <security support-ssl="on|off">
, todavía son compatibles y se migrarán con éxito. La única diferencia es que sus valores serán cambiados de on/off
a true/false
.
Tabla 4.6. Atributos para desactivar o eliminar [Esto es una traducción automática]
Elemento | Atributos para eliminar [Esto es una traducción automática] |
---|---|
<orb> |
|
<interop> |
(todo excepto
|
<poa> |
|
4.12. Migrar la configuración del subsistema de subprocesos [Esto es una traducción automática]
La configuración del servidor JBoss EAP 6 incluyó una threads
subsistema que se usó para administrar grupos de subprocesos en los distintos subsistemas del servidor.
los threads
el subsistema ya no está disponible en JBoss EAP 7. En su lugar, cada subsistema es responsable de administrar sus propios grupos de subprocesos.
Para obtener información acerca de cómo configurar grupos de subprocesos para infinispan
subsistema, ver Configurar Infinispan Thread Pools en el JBoss EAP Guía de configuración.
Para obtener información acerca de cómo configurar grupos de subprocesos para jgroups
subsistema, ver Configurar JGroups Thread Pools en el JBoss EAP Guía de configuración.
En JBoss EAP 6, usted configuró grupos de hilos para conectores y oyentes para el web
subsistema al hacer referencia a un executor
eso fue definido en el threads
subsistema. En JBoss EAP 7, ahora configura pools de hilos para el undertow
subsistema haciendo referencia a un worker
eso se define en el io
subsistema. Para más información, ver Configurando el subsistema IO en el JBoss EAP Guía de configuración.
Para obtener información acerca de los cambios en la configuración del grupo de subprocesos en remoting
subsistema, ver Migrar la configuración del subsistema remoto en esta guía, y Configurando el punto final en el JBoss EAP Guía de configuración.
4.13. Migrar la configuración del subsistema remoto [Esto es una traducción automática]
En JBoss EAP 6, configuró el grupo de subprocesos para remoting
subsistema mediante el establecimiento de diversos worker-*
atributos. El grupo de subprocesos de trabajo ya no está configurado en el remoting
subsistema en JBoss EAP 7 y si intenta modificar la configuración existente, verá el siguiente mensaje.
WFLYRMT0022: Worker configuration is no longer used, please use endpoint worker configuration
En JBoss EAP 7, el grupo de subprocesos de trabajo se reemplaza por una configuración de punto final que hace referencia a worker
definido en el io
subsistema.
Para obtener información sobre cómo configurar el punto final, consulte Configurando el punto final en el JBoss EAP Guía de configuración.
4.14. Cambios en la configuración del servidor WebSocket [Esto es una traducción automática]
Para usar WebSockets en JBoss EAP 6, debe habilitar el protocolo de conector Java NIO2 no bloqueante para el http
conector en el web
subsistema del archivo de configuración del servidor JBoss EAP utilizando un comando similar al siguiente.
/subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)
Para usar WebSockets en una aplicación, también tenía que crear un <enable-websockets>
elemento en la aplicación WEB-INF/jboss-web.xml
archivar y configurarlo para true
.
En JBoss EAP 7, ya no es necesario configurar el servidor para el soporte predeterminado de WebSocket o configurar la aplicación para usarlo. Los WebSockets son un requisito de la especificación Java EE 7 y los protocolos necesarios están configurados por defecto. La configuración WebSocket más compleja se realiza en servlet-container
del undertow
subsistema del archivo de configuración del servidor JBoss EAP. Puede ver las configuraciones disponibles usando el siguiente comando.
/subsystem=undertow/servlet-container=default/setting=websockets:read-resource(recursive=true) { "outcome" => "success", "result" => { "buffer-pool" => "default", "dispatch-to-worker" => true, "worker" => "default" } }
Para obtener más información sobre el desarrollo de WebSocket, consulte Crear aplicaciones WebSocket en el JBoss EAP Guía de desarrollo.
Los ejemplos de código WebSocket también se pueden encontrar en los inicios rápidos que se envían con JBoss EAP.
4.15. Cambios en el servidor de Single Sign-on [Esto es una traducción automática]
los infinispan
el subsistema aún proporciona soporte de caché distribuido para servicios de HA en forma de cachés Infinispan en JBoss EAP 7; sin embargo, el almacenamiento en caché y la distribución de la información de autenticación se manejan de forma diferente que en versiones anteriores.
En JBoss EAP 6, si el inicio de sesión único (SSO) no se proporcionó un caché Infinispan, el caché no se distribuyó.
En JBoss EAP 7, SSO se distribuye automáticamente cuando selecciona el perfil HA. Al ejecutar el perfil HA, cada host tiene su propio caché Infinispan, que se basa en el caché predeterminado del contenedor del caché web. Este caché almacena la sesión relevante y la información de cookies SSO para el host. JBoss EAP maneja la propagación de información de caché individual a todos los hosts. No hay forma de asignar específicamente un caché Infinispan al SSO en JBoss EAP 7.
En JBoss EAP 7, SSO está configurado en undertow
subsistema del archivo de configuración del servidor.
No se requieren cambios en el código de la aplicación para SSO al migrar a JBoss EAP 7.
4.16. Cambios en la configuración de DataSource [Esto es una traducción automática]
4.16.1. Nombre del controlador JDBC Datasource [Esto es una traducción automática]
Cuando configuró un origen de datos en la versión anterior de JBoss EAP, el valor especificado para el nombre del controlador depende de la cantidad de clases enumeradas en el META-INF/services/java.sql.Driver
archivo contenido en el controlador JDBC JAR.
Controlador que contiene una clase individual
Si el META-INF/services/java.sql.Driver
el archivo especificó solo una clase, el valor del nombre del controlador era simplemente el nombre del JAR del controlador JDBC. Esto no ha cambiado en JBoss EAP 7.
Conductor que contiene múltiples clases
En JBoss EAP 6, si había más de una clase enumerada en META-INF/services/java.sql.Driver
archivo, especificó qué clase era la clase de controlador al agregar su nombre al nombre JAR, junto con la versión principal y secundaria, en el siguiente formato.
JAR_NAME + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
En JBoss EAP 7, esto ha cambiado. Ahora especifica el nombre del controlador usando el siguiente formato.
JAR_NAME + "_" + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
Se ha agregado un guión bajo entre JAR_NAME y el DRIVER_CLASS_NAME.
El controlador JDBC de MySQL 5.1.31 es un ejemplo de un controlador que contiene dos clases. El nombre de la clase del controlador es com.mysql.jdbc.Driver
. Los siguientes ejemplos demuestran las diferencias entre cómo se especifica el nombre del controlador en la versión anterior y actual de JBoss EAP.
Ejemplo: nombre del controlador JBoss EAP 6 [Esto es una traducción automática]
mysql-connector-java-5.1.31-bin.jarcom.mysql.jdbc.Driver_5_1
Ejemplo: nombre del controlador JBoss EAP 7 [Esto es una traducción automática]
mysql-connector-java-5.1.31-bin.jar_com.mysql.jdbc.Driver_5_1
4.17. Cambios de configuración del servidor de seguridad [Esto es una traducción automática]
Si migra a JBoss EAP 7 y planifica ejecutarlo con el Administrador de seguridad de Java habilitado, debe tener en cuenta que se realizaron cambios en la forma en que se definen las políticas y que pueden ser necesarios cambios de configuración adicionales. También tenga en cuenta que los administradores de seguridad personalizados no son compatibles con JBoss EAP 7.
Para obtener información sobre los cambios en la configuración del servidor de Java Security Manager, consulte Consideraciones para pasar de versiones anteriores en Cómo configurar la seguridad del servidor para JBoss EAP.
4.17.1. Cambios en el comportamiento de seguridad heredado entre JBoss EAP 7.0 y JBoss EAP 7.1 [Esto es una traducción automática]
4.17.1.1. Cambio de estado HTTP para dominios de LDAP inalcanzables [Esto es una traducción automática]
Si el servidor no puede acceder a un dominio LDAP en JBoss EAP 7.0, el security
el subsistema devolvió un código de estado HTTP de "401 no autorizado". Esto ha cambiado en JBoss EAP 7.1. El legado security
El subsistema en JBoss EAP 7.1 en su lugar devuelve un código de estado HTTP de "500 Error interno" para describir con mayor precisión que se produjo una situación inesperada que impidió que el servidor procesara correctamente la solicitud.
4.17.1.2. Habilitación del dominio de seguridad LDAP para analizar funciones desde un DN [Esto es una traducción automática]
En JBoss EAP 7.0, el org.jboss.as.domain.management.security.parseGroupNameFromLdapDN
la propiedad del sistema se usó para habilitar el dominio de seguridad LDAP para analizar las funciones desde un DN. Cuando esta propiedad se configuró en true
, los roles fueron analizados desde un DN. De lo contrario, se utilizó una búsqueda LDAP normal para buscar roles.
En JBoss EAP 7.1, esta propiedad del sistema ahora está en desuso. En su lugar, configure esta opción configurando el recién introducido parse-group-name-from-dn
atribuir a true
en la ruta del servicio central utilizando el siguiente comando CLI de administración:
/core-service=management/security-realm=REALM_NAME/authorization=ldap/group-search=principal-to-group:add(parse-group-name-from-dn=true)
4.17.1.3. Cambios en el envío del certificado JBoss EAP SSL a un servidor LDAP [Esto es una traducción automática]
En JBoss EAP 7.0, cuando la interfaz de administración está configurada para usar el ldapSSL
el dominio de seguridad, la autenticación mutua entre el servidor y LDAP puede fallar, lo que da como resultado un error de autenticación en la interfaz de administración. Esto se debe a que se realizan dos conexiones LDAP diferentes, cada una con un hilo diferente, y no comparten las sesiones SSL.
JBoss EAP 7.1 presenta un nuevo booleano always-send-client-cert
atributo de gestión en el LDAP outbound-connection
. Esta opción permite la configuración de conexiones LDAP salientes para admitir servidores LDAP que están configurados para requerir siempre un certificado de cliente.
La autenticación LDAP ocurre en dos pasos:
- Busca la cuenta.
- Verifica las credenciales.
Por defecto, el always-send-client-cert
atributo está configurado para false
, lo que significa que el certificado SSL del cliente se envía solo con la primera solicitud de la cuenta de búsqueda. Cuando este atributo está configurado para true
, el cliente JBoss EAP LDAP envía el certificado del cliente al servidor LDAP con las solicitudes de búsqueda y verificación.
Puede configurar este atributo para true
utilizando el siguiente comando de gestión CLI.
/core-service=management/ldap-connection=my-ldap-connection:write-attribute(name=always-send-client-cert,value=true)
Esto da como resultado la siguiente conexión de salida LDAP en el archivo de configuración del servidor.
<management> .... <outbound-connections> <ldap name="my-ldap-connection" url="ldap://127.0.0.1:389" search-dn="cn=search,dc=myCompany,dc=com" search-credential="myPass" always-send-client-cert="true"/> </outbound-connections> .... </management>
4.17.2. Cambios en el modo FIPS [Esto es una traducción automática]
Cambios en el comportamiento de seguridad heredado entre JBoss EAP 7.0 y JBoss EAP 7.1 [Esto es una traducción automática]
Al utilizar dominios de seguridad heredados, JBoss EAP 7.1 proporciona la generación automática de un certificado autofirmado para fines de desarrollo. Esta característica, que no estaba disponible en JBoss EAP 7.0, está habilitada de manera predeterminada. Esto significa que si está ejecutando en modo FIPS, debe configurar el servidor para deshabilitar la creación automática de certificados autofirmados. De lo contrario, es posible que vea el siguiente error al iniciar el servidor.
ERROR [org.xnio.listener] (default I/O-6) XNIO001007: A channel event listener threw an exception: java.lang.RuntimeException: WFLYDM0114: Failed to lazily initialize SSL context ... Caused by: java.lang.RuntimeException: WFLYDM0112: Failed to generate self signed certificate ... Caused by: java.security.KeyStoreException: Cannot get key bytes, not PKCS#8 encoded
Para obtener información sobre la creación automática de certificados autofirmados, consulte Creación automática de certificados autofirmados para aplicaciones en Cómo configurar la seguridad del servidor para JBoss EAP.
4.18. Cambios en el subsistema de transacciones [Esto es una traducción automática]
Algunos atributos de configuración de Transaction Manager que estaban disponibles en transactions
el subsistema en JBoss EAP 6 ha cambiado en JBoss EAP 7.
Cambios en el subsistema de transacciones [Esto es una traducción automática]
La siguiente tabla enumera los atributos de JBoss EAP 6 que se eliminaron del transactions
subsistema en JBoss EAP 7 y los atributos de reemplazo equivalentes.
Atributo en JBoss EAP 6 | Cambios del cliente EJB en JBoss EAP 7 [Esto es una traducción automática] |
---|---|
ruta |
object-store-path |
relativo a |
object-store-relative-to |
Cambios en el subsistema de transacciones [Esto es una traducción automática]
Los siguientes atributos que estaban disponibles en transactions
el subsistema en JBoss EAP 6 está en desuso en JBoss EAP 7. Los atributos obsoletos podrían eliminarse en una versión futura del producto. La siguiente tabla enumera los atributos de reemplazo equivalentes.
Atributo en JBoss EAP 6 | Cambios del cliente EJB en JBoss EAP 7 [Esto es una traducción automática] |
---|---|
use-hornetq-store |
use-journal-store |
hornetq-store-enable-async-io-to |
journal-store-enable-async-io |
habilitar-estadísticas |
estadísticas habilitadas |
4.19. Cambios a la configuración mod_cluster [Esto es una traducción automática]
La configuración para listas de proxy estáticas en mod_cluster ha cambiado en JBoss EAP 7.
En JBoss EAP 6, configuró el proxy-list
atributo, que era una lista separada por comas de direcciones de proxy httpd especificadas en el formato de hostname:port
.
los proxy-list
atributo está en desuso en JBoss EAP 7. Ha sido reemplazado por el proxies
atributo, que es una lista de nombres de enlace de socket de salida.
Este cambio afecta la forma en que define una lista de proxy estática, por ejemplo, al deshabilitar la publicidad de mod_cluster. Para obtener información acerca de cómo deshabilitar la publicidad de mod_cluster, consulte Deshabilitar publicidad para mod_cluster en el JBoss EAP Guía de configuración.
Para obtener más información sobre los atributos mod_cluster, consulte Atributos del subsistema ModCluster en el JBoss EAP Guía de configuración.
4.20. Visualización de cambios de configuración [Esto es una traducción automática]
JBoss EAP 7 proporciona la capacidad de rastrear los cambios de configuración realizados en el servidor en ejecución. Esto permite a los administradores ver un historial de cambios de configuración realizados por usuarios autorizados.
En JBoss EAP 7.0, debe usar core-service
comando CLI de administración para configurar las opciones y para enumerar los cambios de configuración recientes.
Ejemplo: cambios de configuración de lista en JBoss EAP 7.0 [Esto es una traducción automática]
/core-service=management/service=configuration-changes:add(max-history=10) /core-service=management/service=configuration-changes:list-changes
JBoss EAP 7.1 introdujo un nuevo core-management
subsistema que se puede configurar para rastrear los cambios de configuración realizados en el servidor en ejecución. Este es el método preferido para configurar y ver los cambios de configuración en JBoss EAP 7.1.
Ejemplo: cambios de configuración de lista en JBoss EAP 7.1 [Esto es una traducción automática]
/subsystem=core-management/service=configuration-changes:add(max-history=20) /subsystem=core-management/service=configuration-changes:list-changes
Para obtener más información sobre el uso de la nueva core-management
subsistema introducido en JBoss EAP 7.1, ver Ver cambios de configuración en el JBoss EAP Guía de configuración.