0

GoogleReflectionsを使用して次のことを実行したいと思います。

  1. WEB-INF / lib/Patrac-ejb.jarのみをスキャンします

  2. パッケージcom.patracとそのすべてのサブパッケージのみをスキャンします。

  3. タイプアノテーションとメソッドアノテーションのみをスキャンします。

次の構成は正常に機能しているようですが、GoogleReflectionsの使用経験はありません。

Reflections reflections = new Reflections(
    new ConfigurationBuilder()
        .filterInputsBy(new FilterBuilder().include("Patrac-ejb.jar").include(FilterBuilder.prefix("com.patrac")))
        .setScanners(new MethodAnnotationsScanner(), new TypeAnnotationsScanner())
        .setUrls(ClasspathHelper.forWebInfLib(servletContext))
);

動作しているようです。WEB-INF/lib内の他のすべてのJARをスキャンしていないことを確認したいと思います。構成内のフィルター入力と一致しているJARを見つける簡単な方法はありますか?私のアプローチについてのアドバイスをいただければ幸いです。

4

1 に答える 1

0

以下が機能しました:

   //   Get the URL for Patrac-ejb.jar:
   Set<URL> urls = ClasspathHelper.forWebInfLib(webUtil.getServletContext());
   URL patracJarUrl = null;
   for(URL url : urls)
   {
       if(url.getFile().endsWith("Patrac-ejb.jar"))
       {
           patracJarUrl = url;
           break;
       }
   }
   if(null == patracJarUrl)
   {
       throw new IllegalStateException("Patrac-ejb.jar not found.");
   }

   //   Add the Patrac-ejb.jar URL to the configuration.
   Configuration configuration = new ConfigurationBuilder()
       .filterInputsBy(new FilterBuilder()
                       .include(FilterBuilder.prefix("com.patrac")))
       .setScanners(new MethodAnnotationsScanner(), new TypeAnnotationsScanner())
       .setUrls(patracJarUrl);
于 2012-08-22T21:12:36.417 に答える