Wildfly:Web 服务已部署但不可用
Wildfly: web service deployed but unavailable
问题描述:
我想通过 Wildfly 部署 Web 服务,它已部署,但我无法通过 Web 浏览器访问它。
我就是这样做的:
- 我运行
standalone.sh
- 我使用
mvn clean package wildfly:deploy
部署项目
然后我尝试通过网络浏览器在 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
,但早些时候我也更改了其他插件的版本。
问题描述:
我想通过 Wildfly 部署 Web 服务,它已部署,但我无法通过 Web 浏览器访问它。
我就是这样做的:
- 我运行
standalone.sh
- 我使用
mvn clean package wildfly:deploy
部署项目
然后我尝试通过网络浏览器在 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
,但早些时候我也更改了其他插件的版本。