无法处理部署的阶段 POST_MODULE \ "myapp-ws.war" 由以下原因引起:java.lang.运行时异常: WFLYSRV0177: 反射时出错



目前,我有一个ejb项目和一个web服务项目。问题是我的Web服务项目无法从我的库项目访问EJB:

{"WFLYCTL0080: Failed services" => {"jboss.deployment.unit."myapp-ws.war".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment "myapp-ws.war"
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class org.ws.MyAppWSImpl with ClassLoader ModuleClassLoader for Module "deployment.myapp-ws.war" from Service Module Loader
Caused by: java.lang.NoClassDefFoundError: Lorg/myapp/MyAppStatelessLocal;
Caused by: java.lang.ClassNotFoundException: org.myappp.InfossStatelessLocal from [Module "deployment.myapp-ws.war" from Service Module Loader]"}}

据我所知,依赖关系在pom.xml文件中设置正确。这是我的根pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.myapp</groupId>
<artifactId>myapp-app</artifactId>
<packaging>pom</packaging>
<version>0.1.0</version>
<modules>
<module>myapp-ejb</module>
<module>myapp-web</module>      
<module>myapp-ear</module>
<module>myapp-ws</module>       
</modules>
<properties>
<root.dir>${project.basedir}</root.dir>
<jboss.home.name>JBOSS_HOME</jboss.home.name>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<version.server.bom>18.0.1.Final</version.server.bom>
<version.wildfly.maven.plugin>2.0.0.Final</version.wildfly.maven.plugin>
<version.jaxws-tools-maven-plugin>1.2.3.Final</version.jaxws-tools-maven-plugin>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.bom</groupId>
<artifactId>wildfly-jakartaee8-with-tools</artifactId>
<version>${version.server.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>               
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-ejb</artifactId>
<version>${project.version}</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-web</artifactId>
<version>${project.version}</version>
<type>war</type>
<scope>compile</scope>
</dependency>           
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-ws</artifactId>
<version>${project.version}</version>
<type>war</type>
<scope>compile</scope>
</dependency>                   
</dependencies>
</dependencyManagement>
...
</project>

这是我的earpom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.myapp</groupId>
<artifactId>myapp-ear</artifactId>
<packaging>ear</packaging>
<version>0.1.0</version>
<name>myapp-ear</name>
<parent>
<groupId>org.myapp</groupId>
<artifactId>myapp-app</artifactId>
<version>0.1.0</version>
</parent>
<description>This project packages myapp-ejb and myapp-web in an EAR; this is the EAR POM file</description>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-ejb</artifactId>
<type>ejb</type>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-web</artifactId>
<version>0.1.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-ws</artifactId>
<type>war</type>
</dependency>       
</dependencies>
...
</project>

这是我的web服务pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.myapp</groupId>
<artifactId>myapp-ws</artifactId>
<packaging>war</packaging>
<version>0.1.0</version>
<name>myapp-ws Maven Soap WS</name>
<parent>
<groupId>org.myapp</groupId>
<artifactId>myapp-app</artifactId>
<version>0.1.0</version>
</parent>
<dependencies>
...
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-ejb</artifactId>
<type>ejb</type>
<scope>provided</scope>
</dependency>
....
</project>

ear项目部署没有问题,但Web服务部署失败。基本上,我试图遵循这个指南:

https://docs.wildfly.org/18/Getting_Started_Developing_Applications_Guide.html

https://github.com/wildfly/quickstart/blob/10.x/guide/HelloworldQuickstart.asciidoc

https://developers.redhat.com/quickstarts/eap/helloworld-ws#

有人有什么建议吗?TIA-

更新:

这是我的MyAppWSImpl.java:

package myapp.ws;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebService;
import myapp.lab.MyAppStatelessLocal;
@WebService(endpointInterface = "myapp.ws.MyAppWS")
public class MyAppWSImpl implements MyAppWS {
@EJB
MyAppStatelessLocal masl;

@WebMethod()
public String predict(int value) {
return masl.getPrediction(value);
}
}

这是我的web.xml。HTH。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>myapp-ws</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>myappws</servlet-name>
<servlet-class>myapp.ws.MyAppWSImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myappws</servlet-name>
<url-pattern>/myappws</url-pattern>
</servlet-mapping>

</web-app>

请注意,我最终发现我需要使用以下URL:

http://localhost:8080/myapp-ws/myappws?wsdl

代替此值:

http://localhost:8080/myapp-ws/MyAppWSImpl?wsdl

相关内容

最新更新