You can only install the bundles in pax exam. For json there is a
servicemix bundle:
mavenBundle("org.apache.servicemix.bundles",
"org.apache.servicemix.bundles.oro").version("2.0.8_6"),
mavenBundle("org.apache.servicemix.bundles","org.apache.servicemix.bundles.json-lib").version("2.4_1"),
The error you get sounds like duplicate packages of the specs. You
should try to install the exact same bundles in a regular felix and
check if there are problems.
Christian
On 12.02.2015 16:03, Helm, Phil wrote:
Thanks for the help so far Christian. I can only read so many
books/blogs/docs before I just need to get my hands dirty – getting
direct feedback is nice.
I changed to the most current version of pax.
I agree about specifying bundle file names – my problem is that not
every dependency is an actual osgi bundle (for example, the json jar
does not export a package). I have made the changes to mavenBundle as
you suggested, but leaving the json jar as is (I just modified it
locally to add Export-Package to the manifest).
I also added the depends plugin, thanks for that guidance. I wasn’t
sure about the versioning as it seemed to be in multiple places.
Anyway, (hope I am not going backwards) I am now getting a strange
error that I hope is just a simple setup thing based on my changes:
ERROR: Bundle org.ops4j.pax.exam [1] Error starting
link:classpath:META-INF/links/org.ops4j.pax.exam.link
(java.lang.IncompatibleClassChangeError: Class
org.apache.felix.framework.wiring.BundleRequirementImpl does not
implement the requested interface org
.osgi.resource.Requirement)
java.lang.IncompatibleClassChangeError: Class
org.apache.felix.framework.wiring.BundleRequirementImpl does not
implement the requested interface org.osgi.resource.Requirement
at
org.apache.felix.framework.StatefulResolver.findProvidersInternal(StatefulResolver.java:190)
at
org.apache.felix.framework.ResolveContextImpl.findProviders(ResolveContextImpl.java:83)
at
org.apache.felix.framework.resolver.Candidates.populateRevision(Candidates.java:269)
at
org.apache.felix.framework.resolver.Candidates.populate(Candidates.java:155)
at
org.apache.felix.framework.resolver.ResolverImpl.resolve(ResolverImpl.java:91)
at
org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:412)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4088)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2114)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1368)
at
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.lang.Thread.run(Thread.java:745)
I updated the repository: https://github.com/dendron8/paxosgi
*Phil Helm**| **Principal Software Engineer**| Global Employee Benefits*
5411 Page Road, 4^th Floor, C4145 | Durham, NC 27703
Office: 919.907.4118 |**E-mail:**[email protected]
*From:*[email protected]
[mailto:[email protected]] *On Behalf Of *Christian Schneider
*Sent:* Thursday, February 12, 2015 9:00 AM
*To:* OSGi Developer Mail List
*Subject:* Re: [osgi-dev] Integration Testing framework recommendation
Not sure about the RMI problems but I see you specify the bundles with
a file name. This is very fragile and for example I can not run your
test as the files are not present on my machine.
Try to use mavenBundle and the maven coordinates. You should also use
the maven-depends-plugin. It creates a file in target that pax exam
uses for .versionAsInProject(). This means you only
need to specify the versions in the pom file.
You also should consider using the newest pax exam:
https://ops4j1.jira.com/wiki/display/PAXEXAM4/OSGi+Containers
The pax exam version 2.5 you use is quite ancient.
This is a snippet for the depends plugin:
<plugin>
<groupId>org.apache.servicemix.tooling</groupId>
<artifactId>depends-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>generate-depends-file</id>
<goals>
<goal>generate-depends-file</goal>
</goals>
</execution>
</executions>
</plugin>
Christian
n 12.02.2015 14:43, Helm, Phil wrote:
Thanks for the response Christian. I separated the service code
and the test code into two separate bundles, as well as added the
ds as a dependency in the service project and loaded the ds bundle
in the test project. Updated code (as well as the maven output –
debug.out) is here: https://github.com/dendron8/paxosgi
How can I verify that the service bundle is installed? I know how
to do it in a standalone Felix environment, but I am not sure
about this pax-embeded one.
After making these changes I am getting the same error. I turned
on maven debug (-X) in hopes I would see more meaningful messages
from the Felix runtime, but the only Felix message I see is this
[FelixStartLevel] INFO org.ops4j.pax.exam.rbc.internal.Activator -
Name, port or host is null. So this RBC remains inactive.
Previously I was getting an RMI timeout and I had to edit my hosts
file to map local host (127.0.0.1) to my machine name to bypass
the error.
*Phil Helm**| Principal Software Engineer | Global Employee Benefits*
5411 Page Road, 4^th Floor, C4145 | Durham, NC 27703
Office: 919.907.4118 |E-mail:**[email protected]
<mailto:[email protected]>
*From:*[email protected]
<mailto:[email protected]>
[mailto:[email protected]] *On Behalf Of *Christian
Schneider
*Sent:* Wednesday, February 11, 2015 3:28 PM
*To:* OSGi Developer Mail List
*Subject:* Re: [osgi-dev] Integration Testing framework recommendation
Looks like the code you want to test is inside the same project as
the pax exam test. This will not work.
Move the test to a separate project and mae sure you also install
the bundle that contains the service.
As your service seems to use declarative services you will also
need a ds runtime in the pax test setup.
Christian
On 11.02.2015 20:24, Helm, Phil wrote:
Thanks Toni.
Sample code here: https://github.com/dendron8/paxosgi
*Phil Helm**| Principal Software Engineer | Global Employee
Benefits*
5411 Page Road, 4^th Floor, C4145 | Durham, NC 27703
Office: 919.907.4118 |E-mail:**[email protected]
<mailto:[email protected]>
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com
The information contained in this message may be CONFIDENTIAL and
is for the intended addressee only. Any unauthorized use,
dissemination of the information, or copying of this message is
prohibited. If you are not the intended addressee, please notify
the sender immediately and delete this message.
_______________________________________________
OSGi Developer Mail List
[email protected] <mailto:[email protected]>
https://mail.osgi.org/mailman/listinfo/osgi-dev
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com
The information contained in this message may be CONFIDENTIAL and is
for the intended addressee only. Any unauthorized use, dissemination
of the information, or copying of this message is prohibited. If you
are not the intended addressee, please notify the sender immediately
and delete this message.
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev