What causes a URI is not hierarchical error when starting Jazz Team Server 6.0 on Windows?
I have an RTC 6.0 Jazz Team Server running on a Windows Server 2008 system. We have a custom server plugin that is installed on that server. When that plugin is installed, the server does not start properly. The same plugin works fine on an RTC 6.0 JTS on Linux and it works fine on Windows on previous versions of RTC. The error I'm getting is
Exception in thread "Launch callback handler" java.lang.IllegalArgumentException
: URI is not hierarchical
at java.io.File.<init>(File.java:374)
at com.ibm.team.repository.provision.internal.ProvisionService.fixupRela
tiveFileUrl(ProvisionService.java:197)
at com.ibm.team.repository.provision.internal.ProvisionService.connect(P
rovisionService.java:245)
at com.ibm.team.repository.provision.internal.ProvisionService.installFr
omProfileProperties(ProvisionService.java:994)
at com.ibm.team.repository.provision.internal.ProvisionService.installFr
omProfiles(ProvisionService.java:1058)
Aug 3, 2015 3:14:24 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive C:\Program Files\IBM\JazzTeamServer_
6.0Take2\server\tomcat\webapps\ccm.war has finished in 119,657 ms
at com.ibm.team.repository.provision.internal.ProvisionService.installFr
omProfileNoWait(ProvisionService.java:1194)
at com.ibm.team.repository.provision.internal.ProvisionService.installFr
omProfile(ProvisionService.java:1131)
at com.ibm.team.repository.provision.internal.ProvisionService.installFr
omContextConfigurationUrl(ProvisionService.java:1213)
at com.ibm.team.jfs.app.install.Activator$1.run(Activator.java:177)
at java.lang.Thread.run(Thread.java:767)
The provision profile being used for the custom plugin contains the following:
url=file:C:\\Users\\IBM_ADMIN\\IBM\\SPoRTRTC_3\\Server
featureid=com.ibm.sport.rtc.retain.service.feature
One answer
The provision profile is completely wrong. You don't put in an absolute path for a ton of reasons and it points to the wrong location as well.
If you closely follow the Rational Team Concert Extensions Workshop you will notice the provision profile looks like.
url=file:ccm/sites/js_user_role_condition_provider
featureid=com.ibm.js.team.workitem.attribute.user.role.condition.providers.feature
Where ccm is the context root of this specific ccm application. You should always deploy in the sites folder and in there have your own folder with the extension.
If you closely follow the Rational Team Concert Extensions Workshop you will notice the provision profile looks like.
url=file:ccm/sites/js_user_role_condition_provider
featureid=com.ibm.js.team.workitem.attribute.user.role.condition.providers.feature
Where ccm is the context root of this specific ccm application. You should always deploy in the sites folder and in there have your own folder with the extension.
Comments
Why not have absolute path ? I can think of good reasons to do so, not the least of which is ease of maintenance. Not every outfit has 1 application installed on 1 machine/lpar/vm.
I don't see the ease of maintenance in having an absolute path, really (assuming it would even work). Especially if it points to the wrong folder. I don't think it makes sense to discuss it either.
I know it works the way the worshop does it. I don't know an absolute path works. A relative path allows to use the same deployment anywhere - enven on Linux where the drive letter does not matter. You just change the context root, if yours is different.
I believe that is what is the cause of the error. If you get it to work with the right absolute path, fine. But the path above won't work as far as I can tell.