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@3.0.4.Final/org.jboss.weld.environment.se.Weld.createDeployment(Weld.java:962)
> at
> weld.se.core@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@redhat.com <mailto:manovotn@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@mail.ru
> <//e.mail.ru/compose/?mailto=mailto%3aooo_saturn7@mail.ru>>
> > To: "weld-dev" <
weld-dev@lists.jboss.org
> <//e.mail.ru/compose/?mailto=mailto%3aweld%2ddev@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@lists.jboss.org
> <//e.mail.ru/compose/?mailto=mailto%3aweld%2ddev@lists.jboss.org>
> >
https://lists.jboss.org/mailman/listinfo/weld-dev
>
>
>
> --
> Alex Sviridov
>
>
> _______________________________________________
> weld-dev mailing list
>
weld-dev@lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/weld-dev
>
--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic