Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Virgo » virgo [dmserver] repositories
virgo [dmserver] repositories [message #590605] Tue, 20 July 2010 00:27 Go to next message
ch is currently offline chFriend
Messages: 8
Registered: July 2010
Junior Member
Hi,

I have a couple questions about repositories for the virgo osgi server (I'm using virgo-web-server-2.1.0.M02-incubation). I have searched this forum and spring dm server forum as well as the doco but have not found the answer.

1. As I understand it, all bundles/libraries deployed to repositories configured in $SERVER_HOME/config/org.eclipse.virgo.repository.properties (whether they are watched, external or remote - i assume it's the same.?.)? will get loaded into the "user" region. I only mention that because it may have something to do with the problem i am seeing.

I am seeing conflicts of many sorts by simply loading in other bundles into the user region, which i don't expect. For example, if I drop pax-web-jsp-0.5.2.jar into the repository/usr, a core virgo web plan can not be started and the user region/server can not be started. Here's the stack trace:


system-artifacts <DE0500E> Unable to install application from URI 'file:/opt/virgo-web-server-2.1.0.M02-incubation/repository/ ext/org.eclipse.virgo.web-2.1.0.M02-incubation.plan'. Cannot satisfy constraints for bundle 'org.eclipse.gemini.web.tomcat' version '1.1.0.M02-incubation'. Cannot resolve: org.eclipse.gemini.web.tomcat
Resolver report:
An Import-Package could not be resolved. Caused by missing constraint in bundle <org.eclipse.gemini.web.tomcat_1.1.0.M02-incubation>
constraint: <Import-Package: org.apache.catalina.connector; version="6.0.20.S2-r5956">
Uses violation: <Import-Package: javax.servlet.jsp; version="">
org.eclipse.virgo.kernel.osgi.framework.UnableToSatisfyBundl eDependenciesException: Unable to satisfy dependencies of bundle 'org.eclipse.gemini.web.tomcat' at version '1.1.0.M02-incubation': Cannot resolve: org.eclipse.gemini.web.tomcat
Resolver report:
An Import-Package could not be resolved. Caused by missing constraint in bundle <org.eclipse.gemini.web.tomcat_1.1.0.M02-incubation>
constraint: <Import-Package: org.apache.catalina.connector; version="6.0.20.S2-r5956">
Uses violation: <Import-Package: javax.servlet.jsp; version="">

at org.eclipse.virgo.kernel.install.pipeline.stage.resolve.inte rnal.QuasiResolveStage.process(QuasiResolveStage.java:45)
at org.eclipse.virgo.kernel.install.pipeline.internal.StandardP ipeline.doProcessTree(StandardPipeline.java:62)
at org.eclipse.virgo.kernel.install.pipeline.internal.Compensat ingPipeline.doProcessTree(CompensatingPipeline.java:72)
at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipe lineStage.process(AbstractPipelineStage.java:41)
at org.eclipse.virgo.kernel.install.pipeline.internal.StandardP ipeline.doProcessTree(StandardPipeline.java:62)
at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipe lineStage.process(AbstractPipelineStage.java:41)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.driveInstallPipeline(PipelinedApplicationDe ployer.java:268)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.doInstall(PipelinedApplicationDeployer.java :151)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.install(PipelinedApplicationDeployer.java:1 23)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.deploy(PipelinedApplicationDeployer.java:18 7)
at org.eclipse.virgo.kernel.userregion.internal.InitialArtifact Deployer$ArtifactDeployingRunnable.deployArtifacts(InitialAr tifactDeployer.java:155)
at org.eclipse.virgo.kernel.userregion.internal.InitialArtifact Deployer$ArtifactDeployingRunnable.run(InitialArtifactDeploy er.java:145)
at java.lang.Thread.run(Thread.java:619)

system-artifacts <UR0002E> User region failed while deploying initial artifacts. Shutting down.



Can anyone explain why this is happening?

2. Does the classpath management differ for bundles dropped into the 'pickup' directory rather than a repository?

If I simply move the pax-web-jsp-0.5.2.jar into the 'pickup' directory rather than the repository, then it won't deploy due to unresolved dependencies (fair enough), but at least the server starts and it does NOT seem to affect the virgo web as when it resides in the use or ext repository. I'm just trying to understand how the server works - from a classpath perspective what's different between the pickup dir (hot deploy) and a repository?

Here's the stack:


[2010-07-20 10:13:41.245] fs-watcher <HD0002E> Hot deploy failed for file 'pax-web-jsp-0.5.2.jar'. org.eclipse.virgo.kernel.deployer.core.DeploymentException: Dependency satisfaction failed
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.driveInstallPipeline(PipelinedApplicationDe ployer.java:271)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.doInstall(PipelinedApplicationDeployer.java :151)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.install(PipelinedApplicationDeployer.java:1 23)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.deploy(PipelinedApplicationDeployer.java:18 7)
at org.eclipse.virgo.kernel.deployer.hot.HotDeploymentFileSyste mListener.deploy(HotDeploymentFileSystemListener.java:174)
at org.eclipse.virgo.kernel.deployer.hot.HotDeploymentFileSyste mListener.deployIfNotDeployed(HotDeploymentFileSystemListene r.java:186)
at org.eclipse.virgo.kernel.deployer.hot.HotDeploymentFileSyste mListener.onChange(HotDeploymentFileSystemListener.java:87)
at org.eclipse.virgo.util.io.FileSystemChecker.notifyListeners( FileSystemChecker.java:245)
at org.eclipse.virgo.util.io.FileSystemChecker.check(FileSystem Checker.java:166)
at org.eclipse.virgo.kernel.deployer.hot.WatchTask.run(WatchTas k.java:58)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.eclipse.virgo.kernel.osgi.framework.UnableToSatisfyBundl eDependenciesException: Unable to satisfy dependencies of bundle 'org.ops4j.pax.web.jsp' at version '0.5.2': Cannot resolve: org.ops4j.pax.web.jsp
Resolver report:
Uses violation: <Import-Package: javax.servlet.jsp; version="[2.1.0,3.0.0)"> in bundle <org.ops4j.pax.web.jsp_0.5.2>
Found conflicts:
package 'javax.el_1.0.0' in bundle 'com.springsource.javax.el_1.0.0' used by 'javax.servlet.jsp_2.1.0' in bundle 'com.springsource.javax.servlet.jsp_2.1.0'
conflicts with 'javax.el_2.1.0' in bundle 'org.ops4j.pax.web.jsp_0.5.2'
package 'javax.servlet.jsp.el_2.1.0' in bundle 'com.springsource.javax.servlet.jsp_2.1.0' used by 'javax.servlet.jsp_2.1.0' in bundle 'com.springsource.javax.servlet.jsp_2.1.0'
conflicts with 'javax.servlet.jsp.el_2.1.0' in bundle 'org.ops4j.pax.web.jsp_0.5.2'
package 'javax.servlet.jsp.tagext_2.1.0' in bundle 'com.springsource.javax.servlet.jsp_2.1.0' used by 'javax.servlet.jsp_2.1.0' in bundle 'com.springsource.javax.servlet.jsp_2.1.0'
conflicts with 'javax.servlet.jsp.tagext_2.1.0' in bundle 'org.ops4j.pax.web.jsp_0.5.2'


at org.eclipse.virgo.kernel.install.pipeline.stage.resolve.inte rnal.QuasiResolveStage.process(QuasiResolveStage.java:45)
at org.eclipse.virgo.kernel.install.pipeline.internal.StandardP ipeline.doProcessTree(StandardPipeline.java:62)
at org.eclipse.virgo.kernel.install.pipeline.internal.Compensat ingPipeline.doProcessTree(CompensatingPipeline.java:72)
at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipe lineStage.process(AbstractPipelineStage.java:41)
at org.eclipse.virgo.kernel.install.pipeline.internal.StandardP ipeline.doProcessTree(StandardPipeline.java:62)
at org.eclipse.virgo.kernel.install.pipeline.stage.AbstractPipe lineStage.process(AbstractPipelineStage.java:41)
at org.eclipse.virgo.kernel.deployer.core.internal.PipelinedApp licationDeployer.driveInstallPipeline(PipelinedApplicationDe ployer.java:268)
... 10 common frames omitted




3. As it turns out, I don't really need pax-web-jsp-0.5.2.jar. I only copied it in because I am contemplating migrating from servicemix => virgo. There are a number of servicemix modules that our bundles require such as nmr, mq, etc so i copied in the 'system' jars from the servicemix build into the usr repository, thinking that it would make those third party bundles "available" and resolve the dependencies for my bundles but maybe this isn't going to work.

So - I wonder what the best way to do this is? I thought of pointing to the 'remote' springsource osgi repository (http://www.springsource.com/repository) but a) that repository doesn't have many of my required dependencies and b) it seems that I need to copy the repository locally as an external or watched repository. Is this correct?

4. Note that I also saw conflicts while dropping in pax-logging, particularly an older version. I also was not expecting that conflict, but can anyone confirm whether we should be able to use pax logging within virgo?

thanks much.
Re: virgo [dmserver] repositories [message #590616 is a reply to message #590605] Tue, 20 July 2010 09:36 Go to previous message
Glyn Normington is currently offline Glyn NormingtonFriend
Messages: 1222
Registered: July 2009
Senior Member
You raise quite a few questions, so let me pick off the crucial conceptual ones.

Essentially the Virgo repositories are passive. We don't automatically deploy anything in the repositories. We only deploy artifacts from the repositories to satisfy dependencies of artifacts explicitly deployed to Virgo (e.g. by dropping into pickup or via the admin console or tooling).

Repository contents can impact the resolution of deployed artifacts. For example the artifacts which are automatically deployed when the web server starts have their dependencies satisfied from the repositories. If bundles are added to the repositories which export packages that are exported by other bundles, this can cause problems because of the OSGi resolver in Equinox "latching on" to specific providers of packages and running into a uses constraint violation. See http://blog.springsource.com/2008/10/20/understanding-the-os gi-uses-directive/ and some of the related blogs for more on uses constraint violations.

Pickup contents are explicitly deployed. If they deploy successfully, they are then available to satisfy dependencies of other bundles. If deployment fails, they are not present in the OSGi framework and are not available to satisfy dependencies of other bundles. Essentially pickup is not a repository.
Previous Topic:Deploy war file
Next Topic:Green Pages cannot read META-INF file
Goto Forum:
  


Current Time: Wed Sep 25 22:00:41 GMT 2024

Powered by FUDForum. Page generated in 0.03733 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top