这个简单的根资源类在Tomee+1.5.1上运行时失败,返回404错误“请求的资源不可用”。它在WEB-INF中打包为WAR with和空web.xml文件。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@Path("/")
@Produces({ "text/plain", "text/html", "text/xml", "application/xml", "application/json" })
public class BrokenResource {
private static final Log logger = LogFactory.getLog(BrokenResource.class);
public BrokenResource()
{
logger.info("constructed");
}
@GET
@Path("getloggedinguids")
public Response foo(@Context UriInfo uInfo)
{
return Response.ok("\n\n\nrequest URI = " + uInfo.getRequestUri()).build();
}
}
它进行部署,我在控制台输出中看到以下几行:
Mar 22, 2013 4:56:16 PM org.apache.openejb.server.rest.RESTService deployPojo
INFO: REST Service: http://localhost:8080/test//* -> Pojo BrokenResource
我还尝试用web.xml将其打包,该web.xml声明:
<servlet>
<servlet-name>test</servlet-name>
<display-name>Test OpenEJBRest Servlet</display-name>
<servlet-class>
org.apache.openejb.server.rest.OpenEJBRestServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
结果与空web.xml文件相同。
WARNING: No root resource matching request path /test/getloggedinguids has been found, Relative Path: /getloggedinguids.
请记住,如果您使用JAX-RS
或TomEE+
版本,TomEE不是在web.xml中添加条目,而是本机支持JAX-RS。
添加类似这样的类并删除web.xml条目:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/")
public class NoteTakerApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
return new HashSet<Class<?>>(Arrays.asList(BrokenResource.class, RestExceptionMapper.class, OtherClassesYouMayHave.class));
}
}
问题陈述: 出于“奇怪”的原因,我们对API的所有操作都有不同的“主机”。我们有这样的API: 操作1:获取https://host1:port1/api/resources 如果我们按原样使用Swagger/OpenAPI,就意味着每个操作创建一个Swagger/OpenAPI规范,从而使每个操作都有一个Swagger ui页面,然后需要重新创建一个索引页面来列出API的所有操作:-/这正是我们
问题内容: 我正在尝试使用异步响应构建REST Web服务。 我已经在网上解决了这个错误,但是,没有一种解决方案对我有用。我不确定如何去做。 这是REST服务的代码,它具有AsyncResponse,并且取自,我将在下面提供该文件中指定的jar文件。问题是,在部署战争时,我遇到一个例外: 我的课如下: 我的Maven文件如下: 问题答案: 是 当应用程序试图调用一个抽象方法抛出 。 是中的抽象方法
如何设置在TomEE中运行的OpenEJB组件的日志记录级别?我想从的源代码中查看调试日志记录语句。 我尝试修改conf/logging.properties并在WAR的WEB-INF\类中添加一个logging.properties文件,但我找不到正确的组合,我甚至不确定这些是要修改/创建的正确文件。
问题内容: 我在课堂上使用哪种方法,我想知道如何在特定的服务方法上使用只读。 我是否需要额外的定义与此服务的方法,或有另一种方式? 问题答案: 从Spring API 这里。 在评估方法的事务设置时,最派生的位置优先。 在下面的示例中,DefaultFooService类在类级别使用只读事务的设置进行注释,但是同一类中updateFoo(Foo)方法上的@Transactional注释优先于定义的
问题内容: 仍然存在任何情况(鉴于Java EE6具有java:global /,app /,模块/命名标准),需要像下面的示例一样声明EJB或Resources? 在使用的助手类中查找PlaceBid 问题答案: 该命名空间是有时有点了解的功能。该名称空间对应于所谓的(ENC)。 这就像与每个组件相关联的私有“哈希图”一样,整个Web模块被视为一个组件,而各个EJB Bean也分别被视为组件。
多年来,我一直试图让托米1.5.2 JAX-RS与杰克逊合作。我想我已经尝试了100种方法。 这是我的最后一次尝试: 我在conf/system.properties中添加了以下内容: 我在托米的 lib 文件夹中添加了: jackson-mapper-asl-1.9.12.jar jackson-core-asl-1.9.12.jar罐 jackson-jaxrs-1.9.12.jar 我在一个