Dne 16.5.2018 v 20:02 Alex Sviridov napsal(a): > Hi Matej > > I followed your answer and run Weld (SE) as auto module in my JPMS > layer. In this layer I have an arhive with beans.xml > This is my code: > Weld weld = new Weld(); > WeldContainer container = weld.initialize(); > > This is what I get: > > INFO: WELD-000900: 3.0.4 (Final) > May 16, 2018 7:00:39 PM > org.jboss.weld.environment.deployment.discovery.ReflectionDiscoveryStrategy > processAnnotatedDiscovery > INFO: WELD-ENV-000014: Falling back to Java Reflection for > bean-discovery-mode="annotated" discovery. Add org.jboss:jandex to the > classpath to speed-up startup. > 2018-05-16 19:00:39:187 [main] ERROR > com.techsenger.webserver.core.internal.Activator - Error starting server > java.lang.IllegalStateException: WELD-ENV-002009: Weld SE container > cannot be initialized - no bean archives found > at > [email protected]/org.jboss.weld.environment.se.Weld.createDeployment(Weld.java:962) > at > [email protected]/org.jboss.weld.environment.se.Weld.initialize(Weld.java:773) > > Are there any ways to control what modules Weld should scan if we > initialize via Weld class?
Weld SE does not support JPMS modules atm. By default, the TCCL#getResources() is used to find all beans.xml (if set) or the ClassLoader which loaded the WeldResourceLoader.class. However, you can provide a custom ClassLoader or org.jboss.weld.resources.spi.ResourceLoader respectively (see Weld#setClassLoader() and Weld#setResourceLoader()). > > By the way: STOP creating packages with the same name in different JAR > arhives! JPMS doesn't allow it! I had to merge core-impl, spi and api in > one file. Which packages are you talking about? We do know about this limitation and AFAIK this was fixed in 3.0.0. If there is a duplicit package pls create a JIRA issue. > > Best regards, Alex > > Среда, 16 мая 2018, 16:47 +03:00 от Matej Novotny > <[email protected] <mailto:[email protected]>>: > > Weld 2.x is NOT to be executed with Java 9+. > Use Weld 3, please. Best use latest release of course (3.0.4.Final). > > If you can share the test project on GH, that would be neat as well. > Then we could see how you use weld as auto module (as well as many > other configurations) and go from there. > > As for starting SE container, you shouldn't manually call > `bootstrap.startContainer(Environments.SE, deployment);` > Please see the docs on how to bootstrap Weld in SE, you shouldn't > need to deal with any of the methods you listed below. > Here is a doc link - > > http://docs.jboss.org/weld/reference/latest-master/en-US/html_single/#_bootstrapping_cdi_se > > Regards > Matej > > ----- Original Message ----- > > From: "Alex Sviridov" <[email protected] > <//e.mail.ru/compose/?mailto=mailto%[email protected]>> > > To: "weld-dev" <[email protected] > <//e.mail.ru/compose/?mailto=mailto%3aweld%[email protected]>> > > Sent: Wednesday, May 16, 2018 1:51:20 PM > > Subject: [weld-dev] Staring weld container for SE environment > makes me load java ee classes. > > > > Hi all > > > > I am trying to start weld container (2.3.5) as auto module in > JPMS. This is > > my code > > > > Deployment deployment = new Deployment() { > > @Override > > public Collection<BeanDeploymentArchive> > getBeanDeploymentArchives() { > > List<BeanDeploymentArchive> list = new ArrayList<>(); > > list.add(archive); > > return list; > > } > > > > @Override > > public BeanDeploymentArchive loadBeanDeploymentArchive(Class<?> > beanClass) { > > throw new UnsupportedOperationException("Not supported yet."); > > } > > > > @Override > > public ServiceRegistry getServices() { > > SimpleServiceRegistry simpleServiceRegistry = new > SimpleServiceRegistry(); > > simpleServiceRegistry.add(ResourceLoader.class, new > ResourceLoaderImpl()); > > return simpleServiceRegistry; > > } > > > > @Override > > public Iterable getExtensions() { > > return new ArrayList<>(); > > } > > }; > > > > bootstrap.startContainer(Environments.SE, deployment); > > > > The problem is that in BeanDeployment constructor all services > are loaded > > here > > > > https://github.com/weld/core/blob/d0019511ea776e9c35eab68c4d493c2df882a121/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployment.java#L117 > > and if I in my resource loader service return instead of all > java-ee classes > > null, I get null pointer exception, for example here > > > > https://github.com/weld/core/blob/d0019511ea776e9c35eab68c4d493c2df882a121/impl/src/main/java/org/jboss/weld/ejb/EJBApiAbstraction.java#L44 > > > > I can't understand why all these classes are requested from me, > as I am in > > SE. Or I am doing something wrong. Could anyone help me? > > > > -- > > Best regards, Alex Sviridov > > > > _______________________________________________ > > weld-dev mailing list > > [email protected] > <//e.mail.ru/compose/?mailto=mailto%3aweld%[email protected]> > > https://lists.jboss.org/mailman/listinfo/weld-dev > > > > -- > Alex Sviridov > > > _______________________________________________ > weld-dev mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/weld-dev > -- Martin Kouba Senior Software Engineer Red Hat, Czech Republic _______________________________________________ weld-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/weld-dev
