Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Situación

Es bastante común que el servidor de O3 no sea la máquina que está expuesta a la red, usualmente está detrás de un firwall. El problema se plantea cuando queremos entrar en forma remota al server, por ejemplo para administralo o navegar cubos con el O3Browser.
Para lograr esto debemos hacer NAT de los puertos de O3. Para el O3Web no es necesario este trabajo de configuración.

Consideraciones previas

Dado la complejidad de la configuración, es necesario que O3 trabaje en el juego de puerto por defecto, no pudiendose cambiar o otro juego sin un trabajo bastante complicado que escapa a este tutorial.

Procedimiento

  • Bajar el jboss
  • Editar el archivo <o3>/jboss/server/default/conf/jboss-service.xml y
    Buscar (en instalaciones nueva debería esta aprox línea 190)
    Code Block
    
    <mbean code="org.jboss.services.binding.ServiceBindingManager"
       name="jboss.system:service=ServiceBindingManager">
       <attribute name="ServerName">ports-default</attribute>
       <attribute name="StoreURL">${jboss.server.home.url}/port-bindings.xml</attribute>
       <attribute name="StoreFactoryClassName">org.jboss.services.binding.XMLServicesStoreFactory</attribute>
    </mbean>
    
    Comentar todo, con esto hacemos que JBoss use el juego de puertos por defecto
    Code Block
    
    <!--mbean code="org.jboss.services.binding.ServiceBindingManager"
       name="jboss.system:service=ServiceBindingManager">
       <attribute name="ServerName">ports-default</attribute>
       <attribute name="StoreURL">${jboss.server.home.url}/port-bindings.xml</attribute>
       <attribute name="StoreFactoryClassName">org.jboss.services.binding.XMLServicesStoreFactory</attribute>
    </mbean-->
    
  • Editar el archivo <o3>/jboss/server/default/deploy/ejb3.deployer/META-INF/jboss-service.xml
    Buscar:
    Code Block
    
       <mbean code="org.jboss.remoting.transport.Connector"
              name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
          <depends>jboss.aop:service=AspectDeployer</depends>
          <attribute name="InvokerLocator">rmi://${jboss.bind.address}:3873</attribute>
             <handlers>
                <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
             </handlers>
       </mbean>
    
    Comentamos
    Code Block
    
       <!--mbean code="org.jboss.remoting.transport.Connector"
              name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
          <depends>jboss.aop:service=AspectDeployer</depends>
          <attribute name="InvokerLocator">rmi://${jboss.bind.address}:3873</attribute>
             <handlers>
                <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
             </handlers>
       </mbean-->
    
    A continuación en el mismo archivo buscamos y descomentamos:
    Code Block
    
       <!-- The following is sample configuration for modifying the Connector
       <mbean code="org.jboss.remoting.transport.Connector"
              name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
          <depends>jboss.aop:service=AspectDeployer</depends>
          <attribute name="Configuration">
             <config>
                <invoker transport="socket">
                   <attribute name="numAcceptThreads">1</attribute>
                   <attribute name="maxPoolSize">300</attribute>
                   <attribute name="clientMaxPoolSize" isParam="true">50</attribute>
                   <attribute name="timeout" isParam="true">60000</attribute>
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">3873</attribute>
                   <attribute name="backlog">200</attribute>
                </invoker>
                <handlers>
                   <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
                </handlers>
             </config>
          </attribute>
       </mbean-->
    
    Descomentamos, agregamos 2 líneas y modificamos algunos valores (recomendamos cortar y pegar el código):
    Code Block
    
       <!-- The following is sample configuration for modifying the Connector-->
       <mbean code="org.jboss.remoting.transport.Connector"
              name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
          <depends>jboss.aop:service=AspectDeployer</depends>
          <attribute name="Configuration">
             <config>
                <invoker transport="rmi">
                   <attribute name="numAcceptThreads">1</attribute>
                   <attribute name="maxPoolSize">300</attribute>
                   <attribute name="clientMaxPoolSize" isParam="true">50</attribute>
                   <attribute name="timeout" isParam="true">0</attribute>
                   <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   <attribute name="serverBindPort">3873</attribute>
    <!-- líneas agregadas-->
                   <attribute name="clientConnectAddress">mi_webaddress.com</attribute>
                   <attribute name="clientConnectPort">3873</attribute>
    <!-- líneas agregadas-->
                   <attribute name="backlog">200</attribute>
                </invoker>
                <handlers>
                   <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
                </handlers>
             </config>
          </attribute>
       </mbean>
    
    El valor de mi_webaddess.com debe ser el nombre (DNS) con que se ve nuestro sitio
  • Editar el archivo <o3>/jboss/server/default/deploy/jms/uil2-service.xml
    Buscar:
    Code Block
    
     <mbean code="org.jboss.mq.il.uil2.UILServerILService"
             name="jboss.mq:service=InvocationLayer,type=UIL2">
    
        <!-- The server chain -->
        <depends optional-attribute-name="Invoker">jboss.mq:service=Invoker</depends>
        <!-- JNDI binding -->
        <attribute name="ConnectionFactoryJNDIRef">ConnectionFactory</attribute>
        <!-- JNDI binding for XA -->
        <attribute name="XAConnectionFactoryJNDIRef">XAConnectionFactory</attribute>
        <!-- The bind address -->
        <attribute name="BindAddress">${jboss.bind.address}</attribute>
        <!-- The bind port -->
        <attribute name="ServerBindPort">8093</attribute>
        <!-- The ping period in millis -->
        <attribute name="PingPeriod">60000</attribute>
        <!-- Whether tcp/ip does not wait for buffer fills -->
        <attribute name="EnableTcpNoDelay">true</attribute>
        <!-- Used to disconnect the client on the serverside if there is no activity -->
        <!-- Ensure this is greater than the ping period -->
        <attribute name="ReadTimeout">120000</attribute>
        <!-- Used to disconnect the client on the clientside if there is no activity -->
        <!-- Ensure this is greater than the ping period -->
        <attribute name="ClientReadTimeout">120000</attribute>
        <!-- The size of the buffer (in bytes) wrapping the socket -->
        <!-- The buffer is flushed after each request -->
        <attribute name="BufferSize">2048</attribute>
        <!-- Large messages may block the ping/pong -->
        <!-- A pong is simulated after each chunk (in bytes) for both reading and writing -->
        <!-- It must be larger than the buffer size -->
        <attribute name="ChunkSize">1000000</attribute>
      </mbean>
    
    Agregar un linea
    Code Block
    
     <mbean code="org.jboss.mq.il.uil2.UILServerILService"
             name="jboss.mq:service=InvocationLayer,type=UIL2">
    
        <!-- The server chain -->
        <depends optional-attribute-name="Invoker">jboss.mq:service=Invoker</depends>
        <!-- JNDI binding -->
        <attribute name="ConnectionFactoryJNDIRef">ConnectionFactory</attribute>
        <!-- JNDI binding for XA -->
        <attribute name="XAConnectionFactoryJNDIRef">XAConnectionFactory</attribute>
        <!-- The bind address -->
        <attribute name="BindAddress">${jboss.bind.address}</attribute>
        <!-- The bind port -->
        <attribute name="ServerBindPort">8093</attribute>
        <!-- The ping period in millis -->
        <attribute name="PingPeriod">60000</attribute>
        <!-- Whether tcp/ip does not wait for buffer fills -->
        <attribute name="EnableTcpNoDelay">true</attribute>
        <!-- Used to disconnect the client on the serverside if there is no activity -->
        <!-- Ensure this is greater than the ping period -->
        <attribute name="ReadTimeout">120000</attribute>
        <!-- Used to disconnect the client on the clientside if there is no activity -->
        <!-- Ensure this is greater than the ping period -->
        <attribute name="ClientReadTimeout">120000</attribute>
        <!-- The size of the buffer (in bytes) wrapping the socket -->
        <!-- The buffer is flushed after each request -->
        <attribute name="BufferSize">2048</attribute>
        <!-- Large messages may block the ping/pong -->
        <!-- A pong is simulated after each chunk (in bytes) for both reading and writing -->
        <!-- It must be larger than the buffer size -->
        <attribute name="ChunkSize">1000000</attribute>
    <!-- líneas agregada-->
        <attribute name="ConnectAddress">mi_webadddess.com</attribute>
    <!-- líneas agregada-->
      </mbean>
    
    Criterio idententico para mi_webaddress
  • En caso de estar GNU/Linux editar el /ete/hosts de modo que tenga la siguiente línea
    Code Block
    ip_del_server DNS_externo(mi_webaddess)
  • Abrir en el firewall los siguientes puertos:

    Puerto

    Descripción

    1099

    JNDI

    1098

    JNDI

    3455

    EJB3

    3873

    EJB3 a través de RMI

    4446

    JWF

    5744

    RMI IdeaSoft

    8093

    JMS

  • Levantar el JBoss