I've been looking at how to include virtual hosts for wars, ejbs and rars
that need to bind their exported interfaces to specific addresses. Also
needed
is a notion of a security domain for the KeyStore if you need to use SSL/TLS
with
the exported transport. The security domain could also be used for
authentication
and authorization of users, principal mapping, single sign-on, etc.

Right now there are serveral notions of deployers, not all of which are well
defined by an interface. There is a base DeployerMBean that is
implemented by the J2eeDeployer and RARDeployer, but it is not used by the
EJB deployer(ContainerFactory) or the WAR deployers(EmbeddedTomcat,
EmbeddedJetty).
Rather there is an assumption about the signature of deploy made by the
J2eeDeployer
for the JarDeployerName and WarDeployerName mbeans it uses. There is also no
unified notion of security at the deployer level. EJBs and WARs based
security off of
jboss.xml and jboss-web.xml descriptors. RARs have another notion of
security
at the ConnectionFactoryLoaderMBean level.

I would like to come up with an application domain notion that combines all
deployers,
auto deploy directories, virtual host interface and security into a logic
collection of
resources and application components with a common interface address and
security
domain. Effectively all of the mbeans in an application domain become
contained
mbeans within the application domain. For example,

<mbean code="org.jboss.deployment.J2eeApplication"
name="Default:service=J2eeApplication">
    <attribute name="DomainName">Default</attribute>
    <attribute name="VirtualHost">localhost</attribute>
    <attribute name="SecurityDomain">java:/jaas/localhost</attribute>
    <attribute name="JarDeployerName">:service=ContainerFactory</attribute>
    <attribute name="WarDeployerName">:service=EmbeddedCatalina</attribute>
    <attribute name="RarDeployerName">:service=RARDeployer</attribute>

  <mbean code="org.jboss.ejb.ContainerFactory"
name=":service=ContainerFactory">
    <attribute name="VerifyDeployments">true</attribute>
    <attribute name="ValidateDTDs">false</attribute>
    <attribute name="MetricsEnabled">false</attribute>
    <attribute name="VerifierVerbose">true</attribute>
    <attribute name="BeanCacheJMSMonitoringEnabled">false</attribute>
  </mbean>
  <mbean code="org.jboss.catalina.EmbeddedCatalinaServiceSX"
name=":service=EmbeddedCatalina" >
    <attribute name="WebAppsRoot">webapps</attribute>
  </mbean>
  <mbean code="org.jboss.resource.RARDeployer"
name="JCA:service=RARDeployer" />

  <mbean code="org.jboss.resource.ConnectionManagerFactoryLoader"

name=":service=ConnectionManagerFactoryLoader,name=MinervaNoTransCMFactory">
    <attribute name="FactoryName">MinervaNoTransCMFactory</attribute>
    <attribute name="FactoryClass">
      org.jboss.pool.connector.jboss.MinervaNoTransCMFactory
    </attribute>
    <attribute name="Properties"></attribute>
  </mbean>

  <mbean code="org.jboss.resource.ConnectionFactoryLoader"
         name="JCA:service=ConnectionFactoryLoader,name=MinervaDS">
    <attribute name="FactoryName">MinervaDS</attribute>
    <attribute name="RARDeployerName">:service=RARDeployer</attribute>
    <attribute name="ResourceAdapterName">
      Minerva JDBC LocalTransaction ResourceAdapter
    </attribute>
    <attribute name="Properties">
      ConnectionURL=jdbc:HypersonicSQL:hsql://localhost:1476
    </attribute>
    <attribute name="ConnectionManagerFactoryName">
      MinervaSharedLocalCMFactory
    </attribute>
    <attribute name="ConnectionManagerProperties">
      # Pool type - uncomment to force, otherwise it is the default
      #PoolConfiguration=per-factory
      # Connection pooling properties - see
      # org.jboss.pool.PoolParameters
      MinSize=0
      MaxSize=10
      Blocking=true
      GCEnabled=false
      IdleTimeoutEnabled=false
      InvalidateOnError=false
      TrackLastUsed=false
      GCIntervalMillis=120000
      GCMinIdleMillis=1200000
      IdleTimeoutMillis=1800000
      MaxIdleTimeoutPercent=1.0
    </attribute>
  </mbean>

  <mbean code="org.jboss.ejb.AutoDeployer" name=":service=AutoDeployer">
    <attribute name="Deployer">:service=J2eeApplication</attribute>
    <attribute
name="URLs">../deploy/default,../deploy/default/lib</attribute>
  </mbean>
</mbean>

All services within a J2eeApplication domain would inherit the
J2eeApplication domain
name as their JMX ObjectName domain component. All services would be
associated
with the security domain of the J2eeApplication domain.

A similar domain notion would need to be added to the 3.0 RH services
configuration.

An alternative is to simply add VirtualHost and SecurityDomain notions to
the
common ServiceMBean interface for example, and use naming conventions to
achieve the same effect.

Another alternative is to have multiple instances of JBoss running, one for
each
domain with the configuration name defining the domain with a multi-domain
launcher.

I'm looking for comments and suggestions on how to do this.



_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to