0 Replies Latest reply on Feb 2, 2006 10:44 AM by Thomas Wenckebach

    How to explicitely specify AJP port using binding manager

    Thomas Wenckebach Newbie

      Hello,
      I`d like to pass a parameter other than host or port to a stylesheet in my binding manager xml input file (JBoss4.0.3 SP1). In particular, I want to be able to specify the AJP port explicitely, rather then by computing a difference from HTTP port as in the standard example.
      This should work using the the following syntax (quote from admin guide):


      <delegate-config>
      <xslt-config configName="ConfigurationElement"><![CDATA[
      Any XSL document contents...
      ]]>
      </xslt-config>
      <xslt-param name="param-name">param-value</xslt-param>
      <!-- ... -->
      </delegate-config>

      Some parameter name and value seems to be submitted to the transformer as can be seen in XSLTConfigDelegate.java:
      // xslt-param are transform parameters
       for(int a = 0; a < attributes.getLength(); a ++)
       {
       Element attr = (Element) attributes.item(a);
       String name = attr.getAttribute("name");
       if( name.length() == 0 )
       throw new IllegalArgumentException("attribute element #"
       +a+" has no name attribute");
       String attrExp = MetaData.getElementContent(attr);
       String attrValue = StringPropertyReplacer.replaceProperties(attrExp);
       transformer.setParameter(name, attrValue);
      
       log.debug("set "+name+" parameter to:"+attrValue);
       }
      

      However, I found no way of getting the parameter passing to work. Interestingly, I can state that the parameters declared in the script are not totally ignored - this is verified by using a default value via
      <xsl:param name="portAJP" select="9999"/>
      

      This will always result in usage of port 9999, though, even if I actually pass a parameter. If I don`t use the default, like
      <xsl:param name="portAJP"/>
      

      the port is assigned to 8009 - my script is pointless.


      My actual xml file looks as follows:
      <service-config name="jboss.web:service=WebServer"
      delegateClass="org.jboss.services.binding.XSLTFileDelegate"
      >
      <delegate-config>
      <xslt-config configName="ConfigFile"><![CDATA[
      <xsl:stylesheet
      xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
      
      <xsl:output method="xml" />
      <xsl:param name="port"/>
      <xsl:param name="portAJP"/>
      
      <xsl:variable name="portHttps" select="$port + 363"/>
      
      <xsl:template match="/">
      <xsl:apply-templates/>
      </xsl:template>
      
      <xsl:template match = "Connector">
      
      <xsl:for-each select="@*">
      <xsl:choose>
      <xsl:when test="(name() = 'port' and . = '8080')">
      <xsl:attribute name="port"><xsl:value-of select="$port" /></xsl:attribute>
      </xsl:when>
      <xsl:when test="(name() = 'port' and . = '8009')">
      <xsl:attribute name="port"><xsl:value-of select="$portAJP" /></xsl:attribute>
      </xsl:when>
      <xsl:when test="(name() = 'redirectPort')">
      <xsl:attribute name="redirectPort"><xsl:value-of select="$portHttps" /></xsl:attribute>
      </xsl:when>
      <xsl:when test="(name() = 'port' and . = '8443')">
      <xsl:attribute name="port"><xsl:value-of select="$portHttps" /></xsl:attribute>
      </xsl:when>
      <xsl:otherwise>
      <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>
      </xsl:otherwise>
      </xsl:choose>
      </xsl:for-each>
      <xsl:apply-templates/>
      
      </xsl:template>
      
      <xsl:template match="*|@*">
      <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
      </xsl:template>
      </xsl:stylesheet>
      ]]>
      </xslt-config>
      <xslt-param name="portAJP">9999</xslt-param>
      </delegate-config>
      
      </service-config>
      


      Thank`s a lot,
      Thomas