2011-08-18 7 views
12

Estaba jugando con Weld-SE (Java SE) y noté que si hay muchos JAR en el classpath, el tiempo de inicio de JVM se ejecuta en varios segundos.¿Se puede controlar el escaneo classpath en Weld?

¿No hay una manera de especificar/restringir la ruta de exploración como un patrón de paquete o patrón de ruta como en Apache Ant o AspectJ?

PS: Registro en el foro de soldadura simplemente no funciona - que sigue diciendo "la contraseña es trivial"

Respuesta

4

buenas preguntas, pero no creo que es posible. Cada archivo se escanea en beans.xml, por especificación.

+0

supongo que es el momento para que usted pueda eliminar esa respuesta, @Bozho: anterior es perfectamente válido. – Riduidel

+4

@Riduidel gracias. Pensé en eliminarlo, pero según la especificación CDI no hay forma. Weld es solo una implementación. He votado la otra respuesta, ya que es prácticamente la más aplicable. – Bozho

+1

De hecho, olvidé el aspecto no estándar, gracias por la explicación. – Riduidel

13

A partir de soldadura 1.1.0, es posible de acuerdo con Weld reference documentation:

<beans xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:weld="http://jboss.org/schema/weld/beans" 
     xsi:schemaLocation=" 
      http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd 
      http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd"> 
    <weld:scan> 
     <weld:exclude name="mypackage.MyClass"/> 
    </weld:scan> 
</beans> 
6

Usted puede con CDI 1.1. La primera respuesta funciona bien, pero este fragmento funciona en cualquier proveedor:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
    version="1.1" bean-discovery-mode="all"> 

    <scan> 
     <exclude name="my.cool.package" /> 

     <!-- you can exclude with condition --> 
     <exclude name="my.cool.package.for.jodatime" /> 
      <if-class-not-available name="org.joda.time.LocalDate"/> 
     </exclude> 
    </scan> 
</beans> 
Cuestiones relacionadas