Wildfly:Web 服务已部署但不可用

Wildfly: web service deployed but unavailable

问题描述:

我想通过 Wildfly 部署 Web 服务,它已部署,但我无法通过 Web 浏览器访问它。

我就是这样做的:

  1. 我运行standalone.sh
  2. 我使用 mvn clean package wildfly:deploy
  3. 部署项目

然后我尝试通过网络浏览器在 http://localhost:8080/lab-ear/Hello?wsdl 访问我的网络服务,但我只得到:“404 - 未找到”

部署时 maven logs 的片段。
这是初始化时来自 Wildfly 服务器的 logs
这里 Wildfly logs 在部署期间。

其他详情:

我已经完成了另一个 Web 服务工作的项目,但是还有其他问题,所以我从头开始。

This image是这两个项目的结构对比。左边是旧项目,右边是新项目。

重要的是在新项目中我没有得到web目录

可能相关的问题:

还有,这样的项目需要使用Intellij IDEA吗?

编辑

在我的 EJB 模块中,包 pl.edu.agh.soa 中有一个 class Hello

我试图改变这个:

@Stateless
@WebService
public class Hello {
...

至:

@Stateless(name = "Hello")
@WebService(name = "HelloService")
public class Hello {
...

但还是不行。

完全不需要 Intellij IDEA。

我认为您的问题是缺少 Web 目录。如果没有 WEB-INF/web.xml,应用服务器将不知道它应该提供什么服务。

我能够得到一个简单的 "HelloWorld" 类型的 JAX-WS 服务 运行 只是代码:

import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
@Stateless
public class HelloWorld {

    @WebMethod
    public String sayHello( String name ) {
        return "Hello " + name;
    }
}

由此我可以访问 URL http://localhost:8080/<web-app-name>/HelloWorld?wsdl。这是在 Wildfly 18.

问题是您没有指定 @WebMethod。虽然 class 已正确标记,但其中 "run" 没有任何内容。

此外,虽然它确实可以与 JAX-WS 不需要但您的代码可能需要的 @Stateless EJB 注释一起使用。

问题已解决。我认为我在 pom.xml 文件中不必要地更改了太多依赖项的版本。

此外,在主 pom.xml 文件中只有 <version.wildfly.maven.plugin> 需要从 1.0.2.Final 升级到 2.0.2.Final,但早些时候我也更改了其他插件的版本。