在 cxf Servlet 上找不到资源类

2023-12-12

我创建了一个非常简单的 cxf 非基于 spring 的 Servlet,它加载一个javax.ws.rs.Application type.

这是 web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

  <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>
            org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet
        </servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>
                com.mycomp.cxf.TestApplication
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

这是应用程序:

public class TestApplication extends Application
{
    private final Set<Class<?>> classes = new HashSet<Class<?>>();
    private final Set<Object> singletons = new HashSet<Object>();

    public TestApplication() throws ServletException 
    {

    }

    @Override
    public Set<Class<?>> getClasses() 
    {
        return classes;
    }

    @Override
    public Set<Object> getSingletons() 
    {
        return singletons;
    }
}

Servlet 无法加载,原因是:“未找到资源类”,我不确定为什么,因为在应用程序中拥有一组空的类应该没问题。

这是完整的堆栈跟踪:

org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean                          - No resource classes found
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/test]  - StandardWrapper.Throwable
org.apache.cxf.service.factory.ServiceConstructionException
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:122)
    at org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.createServerFromApplication(CXFNonSpringJaxrsServlet.java:304)
    at org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.loadBus(CXFNonSpringJaxrsServlet.java:72)
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:78)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at com.springsource.osgi.webcontainer.tomcat.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:120)
    at com.springsource.osgi.webcontainer.internal.StandardWebContainer$StandardWebApplication.start(StandardWebContainer.java:100)
    at com.springsource.osgi.webcontainer.extender.WebContainerBundleCustomizer.addingBundle(WebContainerBundleCustomizer.java:25)
    at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:440)
    at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
    at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
    at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:413)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:919)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
    at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1349)
    at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1300)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:380)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:276)
    at com.sap.core.js.deployer.watchservice.WARDeployer.deploy(WARDeployer.java:142)
    at com.sap.core.js.deployer.watchservice.FileSystemEventsListener.onChange(FileSystemEventsListener.java:26)
    at com.springsource.util.io.FileSystemChecker.notifyListeners(FileSystemChecker.java:182)
    at com.springsource.util.io.FileSystemChecker.check(FileSystemChecker.java:145)
    at com.sap.core.js.deployer.watchservice.WatchTask.run(WatchTask.java:29)
    at java.lang.Thread.run(Thread.java:679)
Caused by: javax.ws.rs.WebApplicationException
    at org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:238)
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
    ... 31 more
10:41:54,580 [ERROR] org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/test]  - Servlet /test threw load() exception
javax.ws.rs.WebApplicationException
    at org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:238)
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85)
    at org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.createServerFromApplication(CXFNonSpringJaxrsServlet.java:304)
    at org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.loadBus(CXFNonSpringJaxrsServlet.java:72)
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:78)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at com.springsource.osgi.webcontainer.tomcat.TomcatServletContainer.startWebApplication(TomcatServletContainer.java:120)
    at com.springsource.osgi.webcontainer.internal.StandardWebContainer$StandardWebApplication.start(StandardWebContainer.java:100)
    at com.springsource.osgi.webcontainer.extender.WebContainerBundleCustomizer.addingBundle(WebContainerBundleCustomizer.java:25)
    at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:440)
    at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
    at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
    at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:413)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:919)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
    at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1349)
    at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1300)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:380)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:276)
    at com.sap.core.js.deployer.watchservice.WARDeployer.deploy(WARDeployer.java:142)
    at com.sap.core.js.deployer.watchservice.FileSystemEventsListener.onChange(FileSystemEventsListener.java:26)
    at com.springsource.util.io.FileSystemChecker.notifyListeners(FileSystemChecker.java:182)
    at com.springsource.util.io.FileSystemChecker.check(FileSystemChecker.java:145)
    at com.sap.core.js.deployer.watchservice.WatchTask.run(WatchTask.java:29)
    at java.lang.Thread.run(Thread.java:679)

您需要将您的服务类通知给您的环境。首先需要添加服务类,否则只会返回 nullgetSingletons()因此,只需更改现在为空的构造函数即可添加服务类:

class TestApplication extends Application {
    public TestApplication() throws ServletException 
    {
      singletons.add( new com.example.MyService() )
    }
    ....
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 cxf Servlet 上找不到资源类 的相关文章

随机推荐

  • 如何保持网站宽度固定(无论屏幕尺寸如何)

    我正在设计一个网站 我希望我的网站宽度为 980px 我可以通过设置在笔记本电脑上轻松完成此操作right and leftCSS Box 的字段为 15 但我担心的是 当我的网站在另一台没有宽屏的电脑上打开时 这 15 会产生失真 无论屏
  • Mongodb聚合:如何对集合建模以返回树结构?

    https www mongodb com docs manual tutorial model tree structs with parent references 描述了 MongoDB 中树状结构建模的 5 种方法 并推荐使用 gr
  • 我可以在 SwiftUI 应用程序中使用视图控制器 (CalendarKit) 吗?

    我想在我的项目中使用 CalendarKitgithub在这里 它是使用 UIKit 编写的 但我的项目使用 SwiftUI 我可以用吗CustomCalendarExampleController在 SwiftUI 中 也许通过UIVie
  • 打印不带转义字符的 unicode 字符列表

    如果您有如下所示的带有 unicode 字符的字符串 您可以打印它 并获取未转义的版本 gt gt gt s gt gt gt s xc3 xa4 xc3 xa5 xc3 xb6 gt gt gt print s 但如果我们有一个包含上面字
  • 将命令的输出设置为变量(带管道)[重复]

    这个问题在这里已经有答案了 您可以使用管道将命令的输出重定向到变量吗 我没有尝试太多 因为我想不出什么可以尝试 但我尝试了一种方法 有两种变体 例如 echo Hello set text 没用 也没有 echo Hello set tex
  • 调用未定义的方法(laravel 5.2)

    我想显示用户的朋友 但我收到以下错误 Builder php 第 2345 行中的 BadMethodCallException 调用未定义 方法 Illuminate Database Query Builder friends 朋友控制
  • Symfony 2 - 使用 HTTP 身份验证对话框隐藏整个网站

    我正在使用 Symfony 2 构建网站 这项工作正在进行中 因此我不希望用户或搜索引擎访问它 但我的客户希望看到我的进度 我认为一个简单的解决方案是使用 Symfony 2 安全功能提供的机制通过 HTTP 身份验证来保护整个网站 我正在
  • 什么范围的 RGB 被视为“蓝色”?

    我得到的图像像素数据如下 var p c getImageData x y 1 1 data var red p 0 var green p 1 var blue p 2 抱歉 但我的问题与代码无关 什么范围的 RGB 被认为是蓝色 例如红
  • jQuery、JSON 和 Apache 问题

    我有一个 jQuery JSON 请求 它从另一个服务器 例如 foo com 加载一些 JSON getJSON http foo com json php function data alert data 但我收到的数据为空 这不是跨域
  • 如何将渐变可绘制设置为 FloatingActionButton 上的 backgroundTint 属性

    我想对浮动操作按钮使用渐变颜色而不是传统的纯色 我已经知道如何修改按钮的背景颜色 使用ColorStateList 有没有办法实现以下可绘制对象作为背景色调颜色 覆盖 xml
  • 如何在 Bootstrap 5 中使用单独的 JS 文件?

    我正在使用 Bootstrap 但想减小 Javascript 的大小 我只需要下拉 折叠 有时还需要轮播 所以我只想包含这些 每个脚本都有一个文件夹 dist 我尝试通过 SCRIPT 标签包含它们 它根本不起作用 并在控制台中产生很多错
  • Google 地图自动完成 API 未添加地址选项

    我正在尝试实现这个https developers google com maps documentation javascript examples places autocomplete addressform在使用 ASP NET 构
  • 同时使用 git2 和 hyper:openssl 链接多次

    我正在尝试构建同时使用 hyper 和 git2 的东西 现在我遇到了 openssl 链接两次的问题 提示牧马人带我去货运站features我尝试过 但我仍然卡住了 我遇到的确切错误cargo build如下 error native l
  • 如何在nativescript中访问webpack环境变量?

    我想在 webpack config js 中存储一个环境变量 当我在 Nativescript 中将应用程序与 webpack 捆绑在一起时 我将设置该环境变量 目标是即使在捆绑之后也能保持环境变量的秘密 我怎么做 我相信这应该是可能的
  • 如何用中断串口读取串口?

    我正在尝试在 Linux 中读取 NMEA 消息 但我无法得到完整的消息 54 441 V 0 00 0 00 010720 N 42 GPVTG 0 00 T M 0 00 N 0 00 K N 32 GPGGA 020954 441 0
  • CakePHP 3.x - hasMany 通过关联 - 查找

    假设我的设置与 CookBook 中的设置完全相同 http book cakephp org 3 0 en orm associations html class StudentsTable extends Table public fu
  • JavaScript 中的 HTML 助手?

    在 Razor 中我可以这样做 p person Name p 要渲染这样的东西 p Fred p 我真的必须在 不引人注目的 JavaScript 中执行此操作吗 p data custom person id 1234567890 cs
  • IE8 中的不透明度适用于

    ,但不适用于

    我的 IE8 有问题 无法执行 a 元素透明 我发现了这些相关的问题 但我对那里提供的答案没有任何运气 不透明度 CSS 在 IE8 中不起作用 网页不透明 我试过了 给予布局 通过使用zoom 1 但这并没有帮助 这是我的测试 CSS 摘
  • Matplotlib 在图像上制作动画

    我正在尝试为图像上的一堆不断更新的点设置动画 想象一下使绘制的点在某些图像上对角移动 我在这里查看了动画示例 http matplotlib org examples animation dynamic image html 但我不确定如何
  • 在 cxf Servlet 上找不到资源类

    我创建了一个非常简单的 cxf 非基于 spring 的 Servlet 它加载一个javax ws rs Application type 这是 web xml