Hi,

not very sure, your issue sounds not really related to pax exam.
Some thoughts:
Are you waiting long enough ? Sure that the service has been exposed already
? You are starting the bundle yourself ? That should not really necessary.
If the bundle is not in start state, could be that your other bundles have
too much logic in start() activator method or deadlock ?

At best you provide some more complete data like how you expose the required
service, and how your test method really looks like (not just chunks).

Really would like to help with more concrete things but.. ;)

cheers,
Toni


On Mon, Nov 9, 2009 at 1:26 PM, Ben Liang <[email protected]> wrote:

> Hi all,
> I really feel confused about how a bundle get a service in the pax_exam??
>
> I have two bundles, one publish a service or registry a service into
> Service Registration and the other bundle want to get the service using the
> following code:
>
>         MbeanInfoManager tracker = new ServiceTracker(context,
> MbeanInfoManager.class.getName(), null);
>         tracker.open();
>       // grab the service
>         manager = (MbeanInfoManager) tracker.getService();
>
> where MbeanInfoManager is the service.I put the two bundles into the OSGi
> ,and the service can be tracked.
>
> Now I want to make some integration test using pax_exam, so my integration
> test code will be like this:
> import static org.ops4j.pax.exam.CoreOptions.bundle;
> import static org.ops4j.pax.exam.CoreOptions.equinox;
> import static org.ops4j.pax.exam.CoreOptions.frameworks;
> import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
> import static org.ops4j.pax.exam.CoreOptions.options;
> import static org.ops4j.pax.exam.CoreOptions.provision;
>
> import org.junit.Test;
> import org.junit.runner.RunWith;
> import org.ops4j.pax.exam.Inject;
> import org.ops4j.pax.exam.Option;
> import org.ops4j.pax.exam.junit.Configuration;
> import org.ops4j.pax.exam.junit.JUnit4TestRunner;
> import org.osgi.framework.Bundle;
> import org.osgi.framework.BundleContext;
> import org.osgi.framework.ServiceReference;
> @RunWith( JUnit4TestRunner.class )
> public class TestSth {
>     @Inject
>     private BundleContext bundleContext;
>     @Configuration
>     public static Option[] configuration()
>     {
>         return options(
>             frameworks(
>                 equinox()
>             ),
>             provision(
>
>                 bundle(
> "file:E:/tmp/plugins/MbeanInfoManagerNew_1.0.0.200911061110.jar" ),
>                 bundle( "file:E:/tmp/plugins/MbeanInfoManagerTest.jar" )
>               )
>
>         );
>     }
>
>     @Test
>     public void test()throws Exception{
>
>         Bundle testBundle=getInstalledBundle("MbeanInfoManagerTest");
>         if(testBundle!=null){
>             System.out.println("Starting....");
>             testBundle.start();
>         }
>
>
>     }
>     public Bundle getInstalledBundle(String name){
>         Bundle[] bundles=bundleContext.getBundles();
>         for(Bundle bundle:bundles){
>             if(bundle.getSymbolicName().equals(name)){
>                 return bundle;
>             }
>         }
>         return null;
>     }
> }
>
> now i can not get the service which has been registry int the service
> registration.
>
> why?
> pls help me figure it out
>
> Thank you very much
>
>
> --
> Best Regards
> Ben Liang
>
> _______________________________________________
> general mailing list
> [email protected]
> http://lists.ops4j.org/mailman/listinfo/general
>
>


-- 
Toni Menzel
Independent Software Developer
Professional Profile: http://okidokiteam.com
[email protected]
http://www.ops4j.org     - New Energy for OSS Communities - Open
Participation Software.
_______________________________________________
general mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/general

Reply via email to