Menno
Menno

Reputation: 12621

Glassfish unable to deploy at root because default-web-module is declared

While trying to deploy to Glassfish Server Open Source Edition 3.1.2.2 (build 5) from both Netbeans and Admin Console the following message is thrown. Eventhough the Applications section of the Admin Console has no deployed applications. I have tried restarting the domain without success.

Exception while loading the app : java.lang.Exception: WEB0145: Unable to deploy web module [*module name*] at root context of virtual server [server], because this virtual server declares a default-web-module

Is there any cache or something that can be emptied in order to clean up the root so I can once again deploy my application at root context? Thanks for any help!

Step 1

I started with a simple grep-command on my Glassfish-directory for "default-web-module". Seems this was defined in domains/domain1/config/domain.xml (how could I have missed to think of that?).

Step 2

Inside domain.xml is the following:

<applications>
    <application context-root="/" ...>
         ...
    </application>
    ...
</applications>

Also, this application caries multiple references to the applicationname that was previously deployed in root-context="/". As soon as I'm home I will try removing this <application context-root="/" ...>...</application> (ofcourse with a backup of domain.xml). Hope this will solve the problem and that I will be able to deploy to root again!

Upvotes: 1

Views: 5517

Answers (4)

qualebs
qualebs

Reputation: 1381

The problem is due to the fact that glassfish assigns any newly deployed web module to all the available virtual servers except the _asadmin one. If any one of the servers already has a default web module assigned to it you will get this error. The solution is to login into your glassfish web admin navigate to configurations > server-config > Virtual Servers click on each of your virtual servers and remove the assigned default web modules. Deploy your application and then reassign each web module to its respective virtual server.

Upvotes: 0

kingoleg
kingoleg

Reputation: 1323

You can also set other default web module with

asadmin set server.http-service.virtual-server.server.default-web-module=<name of the module>

Upvotes: 0

kolobok_ua
kolobok_ua

Reputation: 4200

There 2 ways:

  1. From Glassfish admin.

    Configurations -> server-config -> Virtual Servers -> server. Then select empty row for Default Web Module attribute and save.

  2. Open file glassfish/domains/{your_domain_name}/config/domain.xml, find line similar to

<virtual-server id="server" default-web-module="web-module-name.war" network-listeners="http-listener-1,http-listener-2"></virtual-server>

and delete default-web-module attribute.

Upvotes: 2

Menno
Menno

Reputation: 12621

Since I ran into the problem it's probable that others will too. For this reason I will answer my own question instead of deleting it.

Following the steps I've mentioned in the question, I noticed the config in domain.xml still had reference to an application with context-root="/". Upon removing this application from the file and saving it, I could once again deploy an application to /!

Upvotes: 2

Related Questions