Hi Valentine,
Thanks for the reply! Hi Andreas feel free to chime in as well!
With in PaxExam how do I control the creation/start order of bundles?
For instance inside the configuration method:
@org.ops4j.pax.exam.junit.Configuration
public static Option[] configuration() {
Option[] options = options(
bootDelegationPackages("javax.transaction",
"javax.transaction.*"),
// Log
mavenBundle("org.ops4j.pax.logging", "pax-logging-api"),
mavenBundle("org.ops4j.pax.logging", "pax-logging-service"),
mavenBundle("org.eclipse.equinox", "cm"),
mavenBundle("org.eclipse.osgi", "services"),
mavenBundle("org.ops4j.pax.web", "pax-web-extender-war"),
mavenBundle("org.ops4j.pax.web", "pax-web-jetty-bundle"),
mavenBundle("org.ops4j.pax.web", "pax-web-jsp"),
mavenBundle("org.apache.derby", "derby"),
mavenBundle("org.apache.geronimo.specs",
"geronimo-jpa_2.0_spec"),
Is there any way to specify the start order of the bundles? Or have some
specified bundles start only after certain bundles start?
Thanks
Matt
On Wed, Apr 20, 2011 at 7:48 AM, Valentin Mahrwald <[email protected]
> wrote:
> Hi Matt,
>
> thanks for the code I have finally figured it out. What happens is that the
> test bundle runs before most of the framework is properly started. In
> particular, your test code executes before the JNDI activator had chance to
> install the InitialContextFactoryBuilder.
> That is not a bug though just an unfortunate and confusing consequence of
> the dynamics.
>
> To work around that I would suggest waiting for one of the services that
> the JNDI bundle installs for
> example org.osgi.service.jndi.JNDIContextManager
> or org.osgi.service.jndi.JNDIProviderAdmin at the start of the test (via
> getOsgiService or otherwise). This resolves the problem for me.
>
> Hope this helps,
>
> Valentin
>
>
> On 19 Apr 2011, at 23:14, Matt Madhavan wrote:
>
> Hi Valentin,
> I'm attaching my Itest java source code. Please take a look at it and let
> me know. If you want I can send you the whole project, next time
>
> Thanks
> Matt
>
> On Tue, Apr 19, 2011 at 12:44 PM, Valentin Mahrwald <
> [email protected]> wrote:
>
>> Hi Matt,
>>
>> it is hard to say what is going wrong, from the stack trace though I can
>> say that the OSGiInitialContextFactoryBuilder the root to all OSGi
>> integration is not installed. That means either
>> a) the JNDI activator (org.apache.aries.jndi.startup.Activator) did not
>> run
>> b) It failed to set itself as the InitialContextFactoryBuilder. In that
>> case there should be a "Cannot set the InitialContextFactoryBuilder ..."
>> info message in the itest logs somewhere.
>>
>> I suspect that a) is the more likely case, in which case something went
>> wrong. Could you post your exact configuration settings - best with specific
>> maven versions - so I can try to reproduce the problem?
>>
>> Regards,
>>
>> Valentin
>>
>>
>> On 18 Apr 2011, at 21:28, Matt Madhavan wrote:
>>
>> Hello Valentin,
>> I have all the bundles you have mentioned. Its still not starting :( Any
>> more ideas?
>>
>> Thanks
>> Matt
>>
>> On Mon, Apr 18, 2011 at 2:31 PM, Valentin Mahrwald <
>> [email protected]> wrote:
>>
>>> Hi Matt,
>>>
>>> the stack trace looks like in the ITest there is no Aries JNDI provider
>>> (either because it is not installed or has failed to start).
>>>
>>> In the blog tests there is:
>>> mavenBundle("org.apache.aries.jndi", "org.apache.aries.jndi"
>>> )
>>>
>>> Plus at least the following dependencies I believe:
>>>
>>> mavenBundle("org.apache.aries.proxy",
>>> "org.apache.aries.proxy"),
>>> mavenBundle("org.apache.aries", "org.apache.aries.util" ),
>>> mavenBundle("org.ops4j.pax.logging", "pax-logging-api"),
>>> mavenBundle("org.ops4j.pax.logging", "pax-logging-service"),
>>> mavenBundle("asm", "asm-all" )
>>>
>>> If you have those already in the setup, then I would assume that the JNDI
>>> bundle has not started correctly :(
>>>
>>> Regards,
>>>
>>> Valentin
>>>
>>> On 18 Apr 2011, at 20:22, Matt Madhavan wrote:
>>>
>>> Hello,
>>> I have a service defined as follows:
>>>
>>> <bean id="persistenceImpl"
>>>
>>> class="com.hcsc.itf.osgi.samples.bp_sdm_jpa.jpa.BlogPersistenceServiceImpl">
>>> <tx:transaction method="*" value="Required" />
>>> <jpa:context property="entityManager" unitname="blogExample" />
>>> </bean>
>>>
>>> <service id="blogJPAPersistenceService" ref="persistenceImpl"
>>>
>>> interface="com.hcsc.itf.osgi.samples.bp_sdm_jpa.api.persistence.BlogPersistenceService">
>>> <service-properties>
>>> <entry key="osgi.jndi.service.name"
>>> value="persistence/bpJPAPersistenceService"/>
>>> </service-properties>
>>> </service>
>>>
>>> When I do Integration test (I'm using PAX-Exam/Pax_runner(1.5.0) with
>>> Equinox) I can look up the Service as follows with no problem.
>>>
>>> @Test public void testPeristence() throws Exception {
>>> BlogPersistenceService jpaService = getOsgiService(
>>> BlogPersistenceService.class,
>>> "osgi.jndi.service.name=persistence/bpJPAPersistenceService",
>>> 10000);
>>>
>>> But I wanted to,look up the same service as a* raw JNDI *Look up as
>>> follows:
>>>
>>> @Test public void testPeristence() throws Exception { InitialContext ic =
>>> new InitialContext(); BlogPersistenceService jpaService =
>>> (BlogPersistenceService) ic.lookup("osgi:service/" +
>>> "com.hcsc.itf.osgi.samples.bp_sdm_jpa.api.persistence.BlogPersistenceService");
>>>
>>>
>>>
>>>
>>> I'm getting the following Exception. (*Please note that I'm in essence
>>> doing the same thing as Apache Aries Blog sample!)*
>>> *
>>> *
>>> javax.naming.NoInitialContextException: Need to specify class name in
>>> environment or system property, or as an applet parameter, or in an
>>> application resource file: java.naming.factory.initial
>>> at
>>> javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
>>> at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
>>> at
>>> javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
>>> at javax.naming.InitialContext.lookup(InitialContext.java:392)
>>> at
>>> com.hcsc.itf.osgi.samples.bp_sdm_jpa.itests.jpa.BpJpaJndiLookUpITest.testPeristence(BpJpaJndiLookUpITest.java:41)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>> at
>>> org.ops4j.pax.exam.junit.extender.impl.internal.CallableTestMethodImpl.injectContextAndInvoke(CallableTestMethodImpl.java:143)
>>> at
>>> org.ops4j.pax.exam.junit.extender.impl.internal.CallableTestMethodImpl.call(CallableTestMethodImpl.java:105)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>> at
>>> org.ops4j.pax.exam.rbc.internal.RemoteBundleContextImpl.remoteCall(RemoteBundleContextImpl.java:80)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
>>> at sun.rmi.transport.Transport$1.run(Transport.java:159)
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
>>> at
>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
>>> at
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
>>> at
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>> at java.lang.Thread.run(Thread.java:662)
>>>
>>> I'm kind of lost! I'm doing the exact thing as done in the Aries Blog
>>> sample! Any ideas please?
>>>
>>> Thanks
>>> Matt
>>>
>>>
>>>
>>>
>>>
>>
>>
> <BpJpaJndiLookUpITest.java>
>
>
>