[weld-dev] Staring weld container for SE environment makes me load java ee classes.
Martin Kouba
mkouba at redhat.com
Thu May 17 08:52:11 EDT 2018
Dne 17.5.2018 v 12:50 Alex Sviridov napsal(a):
> Hi Martin,
>
> Could you or someone else explain what is the difference between
> getResource(String name) and getResources(String name) in
> ResourceLoader?
It's similar to java.lang.ClassLoader.getResource(String) and
java.lang.ClassLoader.getResources(String).
> And, could anyone explain how Weld detects what archives
> it must scan? For examlpe, if from getResource I return
> `jar:file:///home/user/../jar/my-archive-0.1.0-SNAPSHOT.jar!/META-INF/beans.xml`
> , does it mean that Weld will scan my-archive-0.1.0-SNAPSHOT.jar as it
> will get the path to archive from this URL?
Yes, Weld will attempt to process the referenced bean archive (using all
registered
org.jboss.weld.environment.deployment.discovery.BeanArchiveHandler
instances).
>
> Best regards, Alex
>
> Четверг, 17 мая 2018, 10:12 +03:00 от Martin Kouba <mkouba at redhat.com>:
>
> 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
> >
> weld.se.core at 3.0.4.Final/org.jboss.weld.environment.se.Weld.createDeployment(Weld.java:962)
> > at
> >
> weld.se.core at 3.0.4.Final/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
> > <manovotn at redhat.com <mailto:manovotn at redhat.com>
> <mailto:manovotn at redhat.com>>:
> >
> > 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" <ooo_saturn7 at mail.ru
> <mailto:ooo_saturn7 at mail.ru>
> > <//e.mail.ru/compose/?mailto=mailto%3aooo_saturn7 at mail.ru>>
> > > To: "weld-dev" <weld-dev at lists.jboss.org
> <mailto:weld-dev at lists.jboss.org>
> > <//e.mail.ru/compose/?mailto=mailto%3aweld%2ddev at lists.jboss.org>>
> > > 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
> > > weld-dev at lists.jboss.org <mailto:weld-dev at lists.jboss.org>
> > <//e.mail.ru/compose/?mailto=mailto%3aweld%2ddev at lists.jboss.org>
> > > https://lists.jboss.org/mailman/listinfo/weld-dev
> >
> >
> >
> > --
> > Alex Sviridov
> >
> >
> > _______________________________________________
> > weld-dev mailing list
> > weld-dev at lists.jboss.org <mailto:weld-dev at lists.jboss.org>
> > https://lists.jboss.org/mailman/listinfo/weld-dev
> >
>
> --
> Martin Kouba
> Senior Software Engineer
> Red Hat, Czech Republic
>
>
>
> --
> Alex Sviridov
--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic
More information about the weld-dev
mailing list