Pertanyaan Wildfly 10.1 CDI / WELD tidak berfungsi untuk @Any (perang di dalam tabung referensi telinga dalam modul)


Contoh lokal saya interFaces (di web-app perang java saya) tidak disuntikkan dari botol "cdi-able (thejarwithbeansxml.jar)" (beans.xml) yang direferensikan dari saya jboss-deployment-structure.xml (referensi modul).

Silakan lihat konfigurasi di bawah ini;

theapp.ear

--- META-INF -> jboss-deployment-structure.xml

--- sekelompok ejb

--- banyak perang

--- webapp.war (silakan lihat konfigurasi modul)

tubuh jboss-deployment-structure.xml di (theapp.ear-> META-INF)

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.3">

<!-- Make sub deployments isolated by default, so they cannot see each others classes without a Class-Path entry -->
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>

<deployment>
    <dependencies>
        ...
</deployment>


<sub-deployment name="webapp.war">
    <dependencies>
        <module name="com.mymoduletest1"
                meta-inf="import"
                services="import"
                slot="main"
                annotations="false"
                export="true"
                optional="false">
            <imports>
                <include-set>
                    <path name="META-INF"/>
                    <path name="META-INF/beans.xml"/>
                    <path name="META-INF/*"/>
                </include-set>
            </imports>
        </module>
</sub-deployment>
</jboss-deployment-structure>

module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="com.mymoduletest1">

<resources>
    <resource-root path="thejarwithbeansxml.jar"/>
</resources>

<dependencies>
    <module name="someothermodule" export="true">
        <imports>
            <include path="META-INF"/>
        </imports>
    </module>
</dependencies>
</module>

webapp.war (disebarkan sebagai bagian dari telinga)

Memiliki kelas layanan web Istirahat di mana suntikan terjadi sebagai berikut; //expecting to have subclasses ofIActionBaseinjected from module com.mymoduletest1. @Inject @Any private Instance<IActionBase> interFaces;

Setelah membaca dokumentasi Wildfly lagi dan lagi, saya sepertinya mengikuti semua aturan dan bahwa jenis fungsi ini didukung oleh Wildfly. Contoh; Snippet from JBoss

Ketika saya membuat sub-kelas IActionBase yang berada di dalam webapp.war, tidak ada masalah. Setiap saran akan sangat dihargai.

Kode Tes Tambahan

Kode di bawah ini (dalam webapp.war);

java.io.InputStream schemaIS = Class.forName("com.fluidattica.test.TestCrazy").getClassLoader().getResourceAsStream("META-INF/beans.xml");

            int readVal = -1;
            while((readVal = schemaIS.read()) > -1)
            {
                System.out.print((char)readVal);
            }

Menghasilkan hasil berikut (yang menunjukkan beans.xml terlihat dan dimuat);

19:21:47,335 INFO  [stdout] (default task-1) <?xml version="1.0" encoding="UTF-8"?>
19:21:47,337 INFO  [stdout] (default task-1) <!-- This file can be an empty text file (0 bytes) -->
19:21:47,339 INFO  [stdout] (default task-1) <!-- We're declaring the schema to save you time if you do have to configure
19:21:47,340 INFO  [stdout] (default task-1)    this in the future -->
19:21:47,342 INFO  [stdout] (default task-1) <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
19:21:47,342 INFO  [stdout] (default task-1)        xsi:schemaLocation="
19:21:47,344 INFO  [stdout] (default task-1)         http://java.sun.com/xml/ns/javaee
19:21:47,345 INFO  [stdout] (default task-1)         http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
19:21:47,345 INFO  [stdout] (default task-1) 
19:21:47,345 INFO  [stdout] (default task-1) </beans>

4
2017-09-01 12:43


asal


Jawaban: