我正在尝试使用WildFly的JAX-RS-RESTEasy实现来创建一些基于Java的Restful Web服务,并且在部署后立即启动就遇到了一些麻烦。
请注意,我正在将RESTEasy批注添加到已作为.ear文件部署的已经工作的项目中的一组类上,这应该可以吗?为了清楚起见,程序包的结构类似于:
com.something.app
com.something.app.resteasyannotatedclasses
现在,我不再使用web.xml或任何xml conf,而仅使用here中记载的注释
我只有两个类,即RESTEasy Activator:
@ApplicationPath("/coordinates")
public class RestEasyActivator extends Application {
RestEasyActivator () {
Logger.getAnonymousLogger().warning("RestEasyActivator Initialised Rest Easy.");
}
}
实际服务:
@Path("get")
public class CoordinatesServiceWrapper {
private static final Logger LOG = Logger.getLogger(CoordinatesServiceWrapper.class.getName());
@GET
@Path("getByName")
public String findCoordinates(){
LOG.info("Called coordinates service!");
return "Hi";
}
}
将耳朵部署到WildFly后,我会看到日志:
WARN [org.jboss.weld.Bootstrap](焊接线程池-4)WELD-000167:类org.jboss.resteasy.core.AsynchronousDispatcher用@RequestScoped注释,但未声明适当的构造函数,因此是没有注册为bean!
WARN [org.jboss.weld.Bootstrap](焊接线程池-1)WELD-000167:org.jboss.resteasy.plugins.providers.DocumentProvider类使用@ApplicationScoped进行了注释,但未声明适当的构造函数因此未注册为bean!
信息[org.wildfly.extension.undertow](ServerService线程池-391)WFLYUT0021:注册的Web上下文:服务器“默认服务器”的“ / CoordinateSearch”
INFO [org.jboss.as.server](DeploymentScanner线程-2)WFLYSRV0010:部署了“ CoordinateSearch.ear”(运行时名称:“ CoordinateSearch.ear”)
我猜想与RESTEasy有关的警告可以忽略,并且信息消息显示.ear已成功部署。
要调用Web服务,我尝试了URL:
Server:port / CoordinateSearch / coordinates / get / getByName /和 服务器:端口/坐标/ get / getByName /
两者都不生成任何日志条目。
我想念的是什么... 我错过了一些会议吗? -似乎很小。基于RESTEasy文档here,WildFly随RESTEasy一起导入,它将基于包含注释的任何类进行引导……所以我看不到问题。