4 Replies Latest reply on Oct 7, 2008 4:33 PM by meselfe

    How to virtual host jboss portal?

    meselfe

      How do I host the portal and an old web application on the same jboss server?

      I have two subdomains pointing to the same ip number. So for "http://oldapp.mydomain.com" I want to open the old application and for "http://newportal.mydomain.com" I want to open the jboss portal.

      They have both been deployed to the same jboss server. Its the 2.6.6-GA with the portal bundled.

      In the portal application I changed the context so it binds to "/" instead of "/portal" in jboss-web.xml:

      <jboss-web>
       <security ...
       <context-root>/</context-root>
       ...
      </jboss-web>
      

      I also changed the server.xml connector tag to use port 80 instead of 8080. This worked fine - now "http://newportal.mydomain.com" would open the portal site.

      Then I changed the portal application to bind to a virtual host by adding a virtual-host tag to the same file:
      <jboss-web>
       <security ...
       <context-root>/</context-root>
       <virtual-host>newportal.mydomain.com</virtual-host>
       ...
      </jboss-web>
      

      In the old web application I did the same except I bound it to a another virtual host name (and used root context just like the portal):
       <context-root>/</context-root>
       <virtual-host>oldapp.mydomain.com</virtual-host>
      

      Last thing I did was to define both these virtual hosts in server.xml:
       ...
       <Engine name="jboss.web" defaultHost="oldapp.mydomain.com">
       <Realm ... >
       <host name="oldapp.mydomain.com" autoDeploy="true"
       deployOnStartup="true" deployXML="true">
       <alias>oldapp.mydomain.com</alias>
       <Valve
       className="org.apache.catalina.valves.AccessLogValve"
       prefix="oldapp_access_log." suffix=".log"
       pattern="common" directory="${jboss.server.log.dir}"
       resolveHosts="false" />
       </host>
      
       <host name="newportal.mydomain.com"
       autoDeploy="true" deployOnStartup="true" deployXML="true"
       configClass=
       "org.jboss.web.tomcat.security.config.JBossContextConfig"
       >
       <alias>newportal.mydomain.com</alias>
       <Valve
       className="org.apache.catalina.valves.AccessLogValve"
       prefix="portal_access_log." suffix=".log"
       pattern="common" directory="${jboss.server.log.dir}"
       resolveHosts="false" />
       <Valve className=
       "org.jboss.web.tomcat.service.jca.CachedConnectionValve"
       cachedConnectionManagerObjectName=
       "jboss.jca:service=CachedConnectionManager"
       transactionManagerObjectName=
       "jboss:service=TransactionManager" />
       </host>
      

      I start the server with args "-b 192.168.1.5". The firewall forwards incoming port 80 to this local ip number of the jboss server.

      Now "http://oldapp.mydomain.com" works fine - it opens the old application. But when I try to open the jboss portal "http://newportal.mydomain.com" then I get this exception:

      HTTP Status 500 -

      type Exception report

      message

      description The server encountered an internal error () that prevented it from fulfilling this request.

      exception

      javax.servlet.ServletException: javax.resource.ResourceException: No ManagedConnections available within configured blocking timeout ( 30000 [ms] )
      org.jboss.portal.server.servlet.PortalServlet.service(PortalServlet.java:276)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

      root cause

      javax.resource.ResourceException: No ManagedConnections available within configured blocking timeout ( 30000 [ms] )
      org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:303)
      org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:613)
      org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:347)

      org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:330)
      org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:402)
      org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849)
      org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)
      org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
      org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
      org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
      org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
      org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
      org.hibernate.loader.Loader.doQuery(Loader.java:673)
      org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
      org.hibernate.loader.Loader.loadEntity(Loader.java:1907)
      org.hibernate.loader.entity.CollectionElementLoader.loadElement(CollectionElementLoader.java:72)
      org.hibernate.persister.collection.OneToManyPersister.getElementByIndex(OneToManyPersister.java:360)
      org.hibernate.collection.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:158)
      org.hibernate.collection.PersistentMap.get(PersistentMap.java:146)





      Any1 know what Im missing here to make it work??