dev@shoal.java.net

Re: [Shoal-Dev] About "Could not locate World PeerGroup Module Implementation" in IBM JDK1.6

From: Bongjae Chang <carryel_at_korea.com>
Date: Sat, 28 Mar 2009 12:03:52 +0900

Hi Shreedhar.

I'm sorry for this late reply.

If JDK doesn't have a version string, GMS can't join the group because JXTA fails to initialize World PeerGroup.

At this case, Shoal throws unexpected exceptions like a NPE if user uses Shoal's GMS API.

In my opinion, I think that because some JDKs can return a empty version string or null, JXTA had better make use of another compatible version checking regardless of java.lang.Package#isCompatilbe() method.

And I think that JXTA should be verified in IBM JDK6. Actually, I don't know whether JXTA has tested in IBM JDK.

Should I inform JXTA's community of this? Unfortunately, I didn't have found an workaround. :-(

Thanks.
 
--
Bongjae Chang


  ----- Original Message -----
  From: Shreedhar Ganapathy
  To: dev_at_shoal.dev.java.net
  Sent: Monday, March 23, 2009 1:50 PM
  Subject: Re: [Shoal-Dev] About "Could not locate World PeerGroup Module Implementation" in IBM JDK1.6


  Thanks Bongjae for analyzing and locating the problem.
  Mo, could you look into this and figure what's the impact of not having a version string ? Perhaps there is an easy workaround.

  Thanks
  Shreedhar

  Bongjae Chang wrote:
    Hi.

    I tried to test current shoal version in IBM JDK 1.6.

    But GMS failed to join the group in IBM JDK 1.6.

    Here is error log.
    ---------------------
    2009. 3. 21 ¿ÀÈÄ 6:21:17 com.sun.enterprise.jxtamgmt.JxtaUtil configureJxtaLogging
    CONFIG: gms configureJxtaLogging: set jxta logging to default of SEVERE
    2009. 3. 21 ¿ÀÈÄ 6:21:18 com.sun.enterprise.jxtamgmt.NetworkManager initWPGF
    CONFIG: initWPGF storeHome=/home/bluewolf/project/jeus7trunk/target/jeus/domains/dvt/data/gms/dvt
    2009. 3. 21 ¿ÀÈÄ 6:21:18 com.sun.enterprise.jxtamgmt.NetworkManager <init>
    SEVERE: Could not locate World PeerGroup Module Implementation.
    Throwable occurred: net.jxta.exception.PeerGroupException: Could not locate World PeerGroup Module Implementation.
    at net.jxta.peergroup.WorldPeerGroupFactory.getDefaultWorldPeerGroupClass(WorldPeerGroupFactory.java:244)
    at net.jxta.peergroup.WorldPeerGroupFactory.<init>(WorldPeerGroupFactory.java:178)
    at com.sun.enterprise.jxtamgmt.NetworkManager.initWPGF(NetworkManager.java:623)
    at com.sun.enterprise.jxtamgmt.NetworkManager.<init>(NetworkManager.java:213)
    at com.sun.enterprise.jxtamgmt.ClusterManager.<init>(ClusterManager.java:133)
    at com.sun.enterprise.ee.cms.impl.jxta.GroupCommunicationProviderImpl.initializeGroupCommunicationProvider(GroupCommunicationProviderImpl.java:138)
    at com.sun.enterprise.ee.cms.impl.jxta.GMSContext.join(GMSContext.java:123)
    at com.sun.enterprise.ee.cms.impl.common.GroupManagementServiceImpl.join(GroupManagementServiceImpl.java:347)
    ...
    ---------------------

    I could know that "Could not locate World PeerGroup Module Implementation" message was concerned with JDK version and jxta platform when I reviewed [Shoal-Users] mailing list.

    So I tried to test jxta.jar simply.
    ---------------------
    D:\>java -version
    java version "1.6.0"
    Java(TM) SE Runtime Environment (build pwi3260sr1-20080416_01(SR1))
    IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260-20080415_18762 (JIT enabled,
     AOT enabled)
    J9VM - 20080415_018762_lHdSMr
    JIT - r9_20080415_1520
    GC - 20080415_AA)
    JCL - 20080412_01

    D:\>java -jar jxta.jar
    Starting the JXTA platform in mode : EDGE
    2009. 3. 23 ¿ÀÀü 11:22:28 net.jxta.platform.NetworkManager configure
    INFO: Created new configuration. mode = EDGE
    2009. 3. 23 ¿ÀÀü 11:22:28 net.jxta.platform.NetworkManager startNetwork
    INFO: Starting JXTA Network! MODE = EDGE, HOME = file:/D:/.cache/BootEdge/
    2009. 3. 23 ¿ÀÀü 11:22:28 net.jxta.impl.peergroup.StdPeerGroup isCompatible
    WARNING: Failure handling compatibility statement
    Throwable occurred: java.lang.NumberFormatException: Empty version string
            at java.lang.Package.isCompatibleWith(Package.java:223)
            at net.jxta.impl.peergroup.StdPeerGroup.isCompatible(StdPeerGroup.java:414)
            at net.jxta.impl.peergroup.GenericPeerGroup$1.compatible(GenericPeerGroup.java:131)
            at net.jxta.impl.loader.RefJxtaLoader.findClass(RefJxtaLoader.java:254)
            at net.jxta.impl.loader.RefJxtaLoader.findModuleImplAdvertisement(RefJxtaLoader.java:350)
            at net.jxta.peergroup.WorldPeerGroupFactory.getDefaultWorldPeerGroupClass(WorldPeerGroupFact
    ory.java:241)
            at net.jxta.peergroup.WorldPeerGroupFactory.<init>(WorldPeerGroupFactory.java:178)
            at net.jxta.peergroup.NetPeerGroupFactory.<init>(NetPeerGroupFactory.java:204)
            at net.jxta.platform.NetworkManager.startNetwork(NetworkManager.java:410)
            at net.jxta.impl.peergroup.Boot.main(Boot.java:139)
    Uncaught Throwable caught by 'main':
    net.jxta.exception.PeerGroupException: Could not locate World PeerGroup Module Implementation.
            at net.jxta.peergroup.WorldPeerGroupFactory.getDefaultWorldPeerGroupClass(WorldPeerGroupFact
    ory.java:244)
            at net.jxta.peergroup.WorldPeerGroupFactory.<init>(WorldPeerGroupFactory.java:178)
            at net.jxta.peergroup.NetPeerGroupFactory.<init>(NetPeerGroupFactory.java:204)
            at net.jxta.platform.NetworkManager.startNetwork(NetworkManager.java:410)
            at net.jxta.impl.peergroup.Boot.main(Boot.java:139)

    D:\>
    ---------------------

    I could know that this error was related to Package.isCompatibleWith() method.

    Here is my test code.

    ---------------------
    Package javaLangPackage = Package.getPackage( "java.lang" );
    System.out.println( javaLangPackage.getSpecificationVersion() );
    ---------------------

    In Sun JDK6
    ---------------------
    1.6
    ---------------------

    In IBM JDK6
    ---------------------
    null
    ---------------------

    So Package#isCompatibleWith() can return "java.lang.NumberFormatException: Empty version string" exception in IBM JDK6 because specVersion can be null.

    At this case, do you have any solution or work-around?

    PS)
    - current cvs jxta.jar works well in Sun JDK1.5, Sun JDK1.6 and IBM JDK1.5.
    - I tested this case in Windows and Linux. Both Windows and Linux returned same error when I used IBM JDK1.6.

    Thanks.

    --
    Bongjae Chang