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 nuevo http-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 el ejb3 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.

Importante

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 SubsystemJBoss EAP 7 SubsystemGestió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.

  1. 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.
  2. Inicie el servidor JBoss EAP 7 con la configuración de JBoss EAP 6.

    1. Haga una copia de seguridad de los archivos de configuración del servidor JBoss EAP 7.
    2. 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
    3. 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
      Nota

      Verá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.
  3. 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

  1. 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")]
                }
            ]
        }
    }

  2. 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
    Nota

    los messaging subsistema describe-migration y migrate 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.

  3. 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."
        ]}
    }

    Nota

    La lista de migrate y describe-migration advertencias para cada subsistema se encuentra en el Material de referencia al final de esta guía.

  4. 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.

    Nota

    Debe repetir este proceso para cada uno de los jacorb, messaging, y web subsistemas usando los siguientes comandos.

    /subsystem=jacorb:migrate
    /subsystem=messaging:migrate
    /subsystem=web:migrate
  5. Eliminar el cmp, jaxr, y threads 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, y threads 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
Importante

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 por urn:jboss:domain:undertow:4.0 espacio de nombres
  • los org.jboss.as.web módulo de extensión, ubicado en EAP_HOME/modules/system/layers/base/, ha sido reemplazado con org.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.

Nota

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 &quot;%T sec&quot; &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-agent}i&quot;"/>

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 &quot;%T sec&quot; &quot;%r&quot; %s %b &quot;%{i,Referer}&quot; &quot;%{i,User-Agent}&quot;"/>

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 la jboss-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álvulaControlador

AccessLogValve

io.undertow.server.handlers.accesslog.AccessLogHandler

CrawlerSessionManagerValve

io.undertow.servlet.handlers.CrawlerSessionManagerHandler

ExtendedAccessLogValve

io.undertow.server.handlers.accesslog.AccessLogHandler

JDBCAccessLogValve

Ver el JDBCAccessLogValve Procedimiento de migración manual a continuación para obtener instrucciones.

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>
  1. Cree un módulo de controlador para la base de datos que almacenará las entradas de registro.
  2. 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>
  3. Configurar un expression-filter en el undertow 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.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 en infinispan passivation-store del ejb3 subsistema, está en desuso en JBoss EAP 7.1. JBoss EAP 6.4 apoyó la pasivación ansiosa, pasivado según el idle-timeout valor. JBoss EAP 7.1 admite pasivación lenta, pasivación cuando el max-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 la passivation-store en el ejb3 subsistema.
    • Debe configurar la caducidad utilizando el @StatefulTimeout anotación en el código fuente SFSB Java o especificando un stateful-timeout valor en el ejb-jar.xml archivo.

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.

Importante

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.

  1. Sigue las instrucciones para Inicie el servidor y la CLI de administración.
  2. 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 HornetQNombre 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.

Importante

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>
Nota

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.

  1. Ejemplo: nombre del controlador JBoss EAP 6 [Esto es una traducción automática]
  2. Crea el módulo personalizado como se describe arriba.
  3. 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
  4. Asegúrese de que no haya errores o mensajes de advertencia en el registro al finalizar el comando.
  5. 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.

  1. 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
  2. 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
  3. Use el siguiente comando CLI de administración para exportar los datos del diario de mensajería.

    /subsystem=messaging-activemq/server=default:export-journal()
  4. Asegúrese de que no haya errores o mensajes de advertencia en el registro al finalizar el comando.
  5. 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.

Importante

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.

  1. 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.
  2. Inicie el servidor JBoss EAP 7.x en modo normal con no Clientes JMS conectados.

    Importante

    Es 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.

  3. 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
  4. 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)
    Importante

    Hacer no ¡ejecute este comando más de una vez, ya que al hacerlo se generarán mensajes duplicados!

    Aviso

    Si 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.

  1. Cierre el servidor JBoss EAP 7.x.
  2. 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.
  3. 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.
  4. 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
  1. Ejemplo: nombre del controlador JBoss EAP 6 [Esto es una traducción automática]
  2. Haga una copia de seguridad del diario HornetQ y de los archivos de configuración.

  3. Asegúrate de que InQueue La cola JMS que contiene los mensajes JMS está definida en el servidor JBoss EAP 6.4.
  4. Asegúrate de eso messaging La configuración del subsistema contiene una entrada para RemoteConnectionFactory 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
  1. 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.x EAP_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/
    • Eliminar el <resource-root> para el HornetQ lib ruta desde JBoss EAP 7.x EAP_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"/>
        Aviso

        Fallo al eliminar el HornetQ lib camino resource-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.x EAP_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
  2. 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 el messaging-activemq subsistema del servidor JBoss EAP 7.x.

    <jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
  3. Asegúrate de eso messaging-activemq subsistema default servidor contiene una configuración para el InVmConnectionFactory 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])
  4. 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 la MigratedMessagesQueue 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 el messaging-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>
  5. Si la seguridad está configurada para JBoss EAP 6.4, también debe configurar la configuración del puente JMS <source> elemento para incluir un source-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]
  1. 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.
  2. Asegúrese de haber desplegado el destino JMS destino en el servidor JBoss EAP 7.x.
  3. 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]

messagingbindings/

activemq/bindings/

messagingjournal/

activemq/journal/

messaginglargemessages/

activemq/largemessages/

messagingpaging/

activemq/paging/

Nota

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 VersionImplementación de JMSLa 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 el serialVersionUID 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 el serialVersionUID 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.

Importante

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.

  1. Conéctese a JConsole con el siguiente comando.

    $ EAP_HOME/bin/jconsole.sh
  2. Conéctese al proceso local de JBoss EAP. Tenga en cuenta que debe comenzar con "jboss-modules.jar".
  3. En el MBeans pestaña, elegir jboss.asmensajería-activemqdefectoOperaciones 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]

ElementoAtributos no admitidos

<orb>

  • client-timeout
  • max-managed-buf-size
  • max-server-connections
  • outbuf-cache-timeout
  • outbuf-size
  • reintentos de conexión
  • retry-interval
  • Nombre
  • server-timeout

<poa>

  • queue-min
  • queue-max
  • pool-size
  • max-hilos

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]

ElementoAtributos para eliminar [Esto es una traducción automática]

<orb>

  • cache-poa-names
  • cache-typecodes
  • print-version
  • uso-bom
  • use-imr

<interop>

(todo excepto sun)

  • cometa
  • iona
  • chunk-custom-rmi-valuetypes
  • indirection-encoding-disable
  • labo-boolean-encoding
  • strict-check-on-tc-creation

<poa>

  • supervisión
  • queue-wait

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
Nota

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:

  1. Busca la cuenta.
  2. 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 6Cambios 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 6Cambios 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.