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(a)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/#_bo...
Regards
Matej
----- Original Message -----
> From: "Alex Sviridov" <ooo_saturn7(a)mail.ru
<//e.mail.ru/compose/?mailto=mailto%3aooo_saturn7(a)mail.ru>>
> To: "weld-dev" <weld-dev(a)lists.jboss.org
<//e.mail.ru/compose/?mailto=mailto%3aweld%2ddev(a)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/d0019511ea776e9c35eab68c4d493c2df882a12...
> 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/d0019511ea776e9c35eab68c4d493c2df882a12...
>
> 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(a)lists.jboss.org
<//e.mail.ru/compose/?mailto=mailto%3aweld%2ddev(a)lists.jboss.org>
>
https://lists.jboss.org/mailman/listinfo/weld-dev
--
Alex Sviridov
_______________________________________________
weld-dev mailing list
weld-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev
--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic