2011-05-02 107 views
0

喜林試圖從部署在JBoss的一個seassion豆行家索引搜索

此代碼對JavaSE的

 PlexusContainer plexus = new DefaultPlexusContainer(); 

      NexusIndexer n = (NexusIndexer) plexus.lookup(NexusIndexer.class); 
      IndexUpdater iu = (IndexUpdater) plexus.lookup(IndexUpdater.class); 

//   DefaultNexusIndexer n = new DefaultNexusIndexer(); 
       List indexCreators=new ArrayList(); 

//   IndexingContext c = n.addIndexingContext("test", "test",new File("/home/tomas/Desktop/test"),new File("/home/tomas/Desktop/index"), "http://repository.jboss.org/", null); 

      Directory tempIndexDirectory = new RAMDirectory(); 



//   IndexCreator min = new MinimalArtifactInfoIndexCreator(); 
//   MavenPluginArtifactInfoIndexCreator mavenPlugin = new MavenPluginArtifactInfoIndexCreator(); 
//    MavenArchetypeArtifactInfoIndexCreator mavenArchetype = new MavenArchetypeArtifactInfoIndexCreator(); 
//    JarFileContentsIndexCreator jar = new JarFileContentsIndexCreator(); 
//    

      IndexCreator min = plexus.lookup(IndexCreator.class, MinimalArtifactInfoIndexCreator.ID); 
       IndexCreator mavenPlugin = plexus.lookup(IndexCreator.class, MavenPluginArtifactInfoIndexCreator.ID); 
       IndexCreator mavenArchetype = plexus.lookup(IndexCreator.class, MavenArchetypeArtifactInfoIndexCreator.ID); 
       IndexCreator jar = plexus.lookup(IndexCreator.class, JarFileContentsIndexCreator.ID); 
       indexCreators.add(min); 
       indexCreators.add(mavenPlugin); 
       indexCreators.add(mavenArchetype); 
       indexCreators.add(jar); 

       IndexingContext c = n.addIndexingContext(
        "temp", 
        "test", 
        new File("/home/tomas/Desktop/mavenTest"), 
        tempIndexDirectory, 
        "http://repository.jboss.org/maven2/", 
        null, 
        indexCreators); 



       IndexUpdateRequest ur=new IndexUpdateRequest(c); 
       ur.setForceFullUpdate(true); 
      iu.fetchAndUpdateIndex(ur); 

//    for (String s : c.getAllGroups()) { 
//     System.out.println(s); 
//    } 
      BooleanQuery q = new BooleanQuery(); 
      q.add(n.constructQuery(ArtifactInfo.GROUP_ID, "*"), Occur.SHOULD); 

      FlatSearchRequest request = new FlatSearchRequest(q); 
      FlatSearchResponse response = n.searchFlat(request); 


      for (ArtifactInfo a : response.getResults()) { 

       String bUrl=url+a.groupId+"/"+a.artifactId+"/"+a.version+"/"; 
       String fileName=a.artifactId+"-"+a.version; 
       System.out.println(bUrl+fileName+"."+a.packaging); 


      }

JBoss上搜索Maven倉庫一個得到這個異常:

org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException 
     role: org.sonatype.nexus.index.NexusIndex

據我所知,這與構建路徑無關,因爲我可以實例化DefaultNexusIndexer(這不起作用,因爲叢使他注射) 這可能是一些與叢

請幫

回答

0

你檢查,你有你的類路徑相同Plexus configuration files

我想,在你的SE測試你對其中包含的角色org.sonatype.nexus.index.NexusIndex這可能會在你的JBoss缺少組件描述符的類路徑叢配置文件。

+0

我不以SE和在JBoss中使用同一個包有沒有這個林的配置文件。 – sherif 2011-05-04 07:26:57

+0

編輯:org.sonatype.nexus.index.NexusIndex的描述符與類在同一個包中它可能是因爲它被封裝在耳朵文件中而不能找到它嗎? – sherif 2011-05-04 07:35:47

+0

它應該可以從ear文件加載它,因爲它只是使用[ClassLoader.getResources()](http://download.oracle.com/javase/6/docs/api/java/lang/ClassLoader。 html#getResources(java.lang.String)。也許你可以在你的JBoss上調試(或者添加日誌記錄)來查看它是否可以加載? – wjans 2011-05-04 07:51:39