users@glassfish.java.net

Re: Difficulty getting virtual server to work correctly

From: Jan Luehe <Jan.Luehe_at_Sun.COM>
Date: Mon, 22 Mar 2010 10:03:12 -0700

glassfish_at_javadesktop.org wrote:
> I'm having a fair amount of trouble getting virtual servers to behave correctly in Glassfish v3. Making matters worse, if I do the deployment via the admin console, I get errors (parameters are incorrect etc). I've ended up having to edit domain.xml myself and restart the server each time to test it.
>
> I am trying to do the following (I've changed the actual domain names for the example):
>
> - add a listener for port 80
> - direct webapp.domain.ca -> webapp
> - direct webapp.dev.domain.ca -> webapp_dev
>
> I have the listener working correctly, a virtual server called prod directed to webapp working correctly but can't get the virtual server dev to work correctly - it always brings up the prod app (webapp).
>
> Here's the relevant configuration.
>
> I set up the listener on port 80:
>
> <network-config>
> <protocols>
> <protocol name="http-listener-1">
> <http default-virtual-server="server" max-connections="250" server-name="">
> <file-cache enabled="false" />
> </http>
> </protocol>
> <protocol security-enabled="true" name="http-listener-2">
> <http default-virtual-server="server" max-connections="250" server-name="">
> <file-cache enabled="false" />
> </http>
> <ssl ssl3-enabled="false" cert-nickname="s1as" />
> </protocol>
> <protocol name="admin-listener">
> <http default-virtual-server="__asadmin" max-connections="250" server-name="">
> <file-cache enabled="false" />
> </http>
> </protocol>
> <protocol name="http-listener-80-protocol">
> <http default-virtual-server="prod" />
> </protocol>
> </protocols>
> <network-listeners>
> <network-listener port="8080" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool" />
> <network-listener port="8181" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool" />
> <network-listener port="4848" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="http-thread-pool" />
> <network-listener port="80" protocol="http-listener-80-protocol" transport="tcp" name="http-listener-80" thread-pool="http-thread-pool" />
> </network-listeners>
> <transports>
> <transport name="tcp" />
> </transports>
> </network-config>
> <thread-pools>
> <thread-pool name="http-thread-pool" />
> <thread-pool name="thread-pool-1" max-thread-pool-size="200" />
> </thread-pools>
> </config>
> </configs>
>
> I added 2 virtual servers (prod and dev) each assigned to a particular host, both using port 80. I also assigned the default server for prod just in case they use a different host name to get to that webserver:
>
> <configs>
> <config name="server-config">
> <jruby-container jruby-home="C:\Program Files (x86)\jruby-1.4.0">
> <jruby-runtime-pool />
> </jruby-container>
> <http-service>
> <access-log />
> <virtual-server id="server" network-listeners="http-listener-1,http-listener-2" />
> <virtual-server id="__asadmin" network-listeners="admin-listener" />
> <virtual-server id="prod" log-file="${com.sun.aas.instanceRoot}/logs/prod.log" hosts="ecoenergy.domain.com" network-listeners="http-listener-80,http-listener-2,http-listener-1" />
> <virtual-server id="dev" log-file="${com.sun.aas.instanceRoot}/logs/dev.log" hosts="ecoenergy.domain.com" network-listeners="http-listener-80,http-listener-2,http-listener-1" />
> </http-service>
>
>

I have not looked at this closely, but I noticed that the two virtual
servers with ids "prod" and "dev" are associated with the same network
listeners and share the same domain name "ecoenergy.domain.com", which
is a problem, because it will make it impossible for the network
listeners to disambiguate the two virtual servers when they receive a
request with a domain name equal to "ecoenergy.domain.com". This
configuration should have given you an error or at least a warning in
the server.log.

Also, I'm not sure if the JRuby container supports the same kind of
virtual server mapping as the web container. Can you try getting this to
work for a web application first?

Thanks,

Jan

> Here is the app deployment (JRuby/Rails):
>
> <applications>
> <application context-root="/" location="file:/D:/ecoEnergy/ecoenergyweb/" directory-deployed="true" name="ecoenergyweb" object-type="user">
> <property name="defaultAppName" value="ecoenergyweb" />
> <property name="jruby.rackEnv" value="production" />
> <property name="jruby.MTSafe" value="true" />
> <property name="jruby.home" value="C:\Program Files (x86)\jruby-1.4.0" />
> <property name="jruby.applicationType" value="rails" />
> <module name="ecoenergyweb">
> <engine sniffer="jruby" />
> </module>
> </application>
> <application context-root="/" location="file:/D:/ecoEnergy/test/ecoenergyweb/" directory-deployed="true" name="ecoenergyweb_dev" object-type="user">
> <property name="defaultAppName" value="ecoenergyweb_dev" />
> <property name="jruby.rackEnv" value="test" />
> <property name="jruby.MTSafe" value="true" />
> <property name="jruby.home" value="C:\Program Files (x86)\jruby-1.4.0" />
> <property name="jruby.applicationType" value="rails" />
> <module name="ecoenergyweb_dev">
> <engine sniffer="jruby" />
> </module>
> </application>
> </applications>
>
> Finally, the application references to the virtual servers:
>
> <servers>
> <server name="server" config-ref="server-config">
> <application-ref ref="__admingui" virtual-servers="__asadmin" />
> <application-ref ref="ecoenergyweb" virtual-servers="prod, server" />
> <application-ref ref="ecoenergyweb_dev" virtual-servers="dev" />
> <resource-ref ref="jdbc/__TimerPool" />
> <resource-ref ref="jdbc/__default" />
> <resource-ref ref="jdbc/ee" />
> <resource-ref ref="jdbc/ee_login" />
> </server>
> </servers>
> [Message sent by forum member 'wischr']
>
> http://forums.java.net/jive/thread.jspa?messageID=393095
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>
>