Apache CXF Web 服务问题

2024-01-15

我有一个使用 Maven 的多模块项目。在其中一个模块上,我有几个使用 Apache CXF Framework 2.5.4 开发的 Web 服务。目前我有两个“问题”或疑问。

首先,如果我调用应返回列表的 Web 服务之一的方法,如果列表为空,它将返回“null”而不是空列表。 我试图找出可能是什么问题,如果这是我正在使用的 CXF 版本的错误,或者我是否应该使用一些注释来修改方法或响应的定义,但我找不到任何东西。我见过一些人遇到同样的问题,但没有解决方案。

我想问的另一件事是:我正在使用 MVC 模式开发一个 Web 应用程序。我想知道应该以哪种方式从控制器调用 Web 服务,而不是使用 ClasspathXmlCpplicationContext 然后使用 context.getBean()。

例如,客户端 Web 服务之一的 bean 定义为:

<jaxws:client id="deviceWSClient"
        serviceClass="..IDeviceWebService"
        address="http://localhost:8080/../DeviceWS" /> 

我已经尝试过使用 @Autowired 或 @WebServiceRef 注释。有了这些,它可以工作,但不会向 Web 服务发出 HTTP 请求,我猜它会从本地存储库获取依赖项。我认为我需要的是在控制器上注入这个bean的方式。


回答您的问题

对于你的第一个问题:如果列表为空,CXF 版本 2.6.1 会正确处理该列表 - 服务返回空。只是为了演示我有一个示例服务,其中类型是这样定义的:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "MemberSearchResponse", namespace="http://bk.org/memberservice/" )
public class MemberSearchResponse {

    @XmlElementWrapper(name="memberDetails")
    private List<MemberDetail> memberDetails;

如果我在上面返回一个空的 memberDetails,则通过网络传输的 xml 如下:

    <ns2:searchMemberResponse xmlns:ns2="http://bk.org/memberservice/">
        <ns2:MemberSearchResponse>
           <memberDetails/>
        </ns2:MemberSearchResponse>
    </ns2:searchMemberResponse>

EDIT

它像上面一样作为包装器类型的一部分被正确处理,但如果不是返回包装器类型,而是直接返回列表,则确实返回 null。

考虑这样定义的 Web 服务接口:

@WebMethod(operationName = "searchMember")
    List<MemberDetail> searchMember(@WebParam(name = "MemberSearchRequest") MemberSearchRequest memberSearchRequest);

如果返回的列表是空列表,CXF 2.6.1 也会将其序列化为 null。

解决方法是使用包装类型

EDIT END

对于你的第二个问题:

您可以通过以下方式创建客户端 Bean:

<jaxws:client id="deviceWSClient"
        serviceClass="..IDeviceWebService"
        address="http://localhost:8080/../DeviceWS" /> 

一旦你以这种方式创建了一个 Spring bean,你就可以像对待普通 Spring bean 一样对待它,并像对待任何普通 Spring bean 一样注入它,例如,可以这样注入:

 <bean id="consumerBean" class="...">
    <property name="deviceWS" ref="deviceWSClient">
 </bean>

or use @Autowired

@Autowired IDWebService deviceWSClient

Or user @Resource

@Resource IDWebService deviceWSClient

这些是注入 Bean 的常用方法。

我在这个 github 位置有一个示例应用程序,您可以使用:https://github.com/bijukunjummen/memberservice-codefirst.git https://github.com/bijukunjummen/memberservice-codefirst.git

只需使用启动服务器mvn tomcat:run并运行测试org.bk.memberservice.TestCxfIntegrationTest这将向 CXF 服务发出请求。

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

Apache CXF Web 服务问题 的相关文章

  • 通过代理从java发送电子邮件

    我使用 Java Mail API 来发送和接收电子邮件 现在我做这个项目的地方有一个代理服务器 我可以知道如何通过代理服务器从java发送电子邮件吗 请参阅此处的常见问题解答 http www oracle com technetwork
  • 使用Keycloak保护Tomcat应用程序时出现HTTP 403禁止错误

    我为这个错误苦苦挣扎了一整天 我一遍又一遍地检查我在tomcat中Keycloak和APP的配置 没有发现错误 下图为测试场景 APP配置 1 Keycloak json是从Keycloak控制台复制的 2 context xml 也正确
  • 在 IIS 中运行 Java Web 应用程序

    有人找到了在 IIS 中运行 Java Web 应用程序的方法吗 在我看来 编写一个将 Jetty 或自定义 servlet 容器与 IIS 集成的 ISAPI 插件 这个词正确吗 应该是完全可能的 这样做的好处是 许多优秀的高端 Java
  • Android - 使用 Intent 打开 PDF 文档关闭后不保存

    我面临的问题是 当尝试保存对使用此 URI 打开的 PDF 文档的更改时内容 xx xxx xxx fileprovider external Download Sync FileName pdf 我所做的任何更改在关闭文档后都不会保存 但
  • Android Studio 中没有参考文档

    昨天刚刚出现了一个新问题 当我将鼠标悬停在方法上或按 Ctrl Q 时 我通常会获取该特定方法的文档信息 但现在我只是得到 按 Ctrl QSharedPreferences getLong Following external urls
  • 如何暂停程序直到按下按钮?

    我使用从 jframe 扩展的类 它有一个按钮 我在程序中使用它 我希望当在我的程序中运行 jframe 时我的整个程序暂停 直到我按下按钮 我该怎么做 in c getch 做这个 我想要一个这样的功能 通过睡眠暂停执行 http dow
  • 在 Java 中停止线程? [复制]

    这个问题在这里已经有答案了 我正在编写一段代码 该代码连接到服务器 使用该连接生成一堆线程并执行一堆 东西 在某些情况下 连接会失败 我需要停止一切并从头开始使用新对象 我想在对象之后进行清理 但在线程上调用 thread stop 但此方
  • 如何将选定的项目移动到列表顶部

    List
  • 椭圆与椭圆如何相交?

    我用的是JAVA Ellipse2D s1 new Ellipse2D Float 0 0 100 100 System out println s1 intersects 99 30 100 100 应该返回 false 但它返回 tru
  • 使用 Gradle 构建 Kotlin + Java 9 项目

    我对 Gradle 老实说 还有 Java 9 相当陌生 我正在尝试使用 Gradle 构建一个混合了 Java 9 和 Kotlin 的简单库项目 更详细地说 Java中有一个接口 Kotlin中有一个实现 我会用 Kotlin 做所有事
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • java代码的等效vb代码

    谁能告诉我这段Java代码到底做了什么 SecureRandom random SecureRandom getInstance SHA1PRNG byte bytes new byte 20 synchronized random ran
  • Android Studio安装JDK错误

    In Android Studio I am facing bellow error 当我按下时会显示此弹出窗口Alt Enter对于缺少的类 符号 当我点击 setup SDK 时 它显示两个选项 1 8 Java版本 1 8 0 60
  • Log4Net“找不到架构信息”消息

    我决定使用log4net http logging apache org log4net index html作为新 Web 服务项目的记录器 一切工作正常 但对于我在我的应用程序中使用的每个 log4net 标签 我都会收到很多类似下面的
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 清单合并失败:需要为 显式指定 android:exported

    我的清单文件有问题 错误消息 清单合并失败 android 需要为 明确指定导出 面向 Android 12 及更高版本的应用需要指定显式值android exported当相应的组件定义了意图过滤器时 有关详细信息 请参阅 https d
  • 嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.springframework.jdbc.support.SQLErrorCodesFactory

    我正在使用 spring 和 jdbctemplate 编写一个应用程序 但是我遇到了以下错误 org springframework web util NestedServletException Handler processing f
  • 如何列出所有已加载的 Spring bean 定义文件

    在大型企业系统中 并不总是清楚在 ApplicationContext 构建期间导入了哪些文件 有没有办法列出过程中加载的所有文件 我知道如何列出加载的属性文件 但不知道导入的 bean 文件 更新示例 文件 1 applicationCo
  • SQL准备语句如何通过多个可能的菜单选择进行选择?

    所以我有 4 个菜单选择 产品 位置 课程类型和类别 所有这些都可以为空 使用 JSF 编程 但这应该与这个问题无关 因为它是一个 SQL 问题 菜单选择将向托管 bean 发送用户选择的变量 并使用准备好的语句使用用户选择的菜单中的信息
  • 应用服务器如何注入私有字段?

    我看到这个问题 注入私有 包或公共字段或提供 setter https stackoverflow com questions 2021716 inject into private package or public field or p

随机推荐

  • 如何从 C 中的浮点数中提取有偏差的指数?

    我在从浮点数中查找有偏差的指数时遇到问题 我不明白为什么我为参数输入的任何数字都返回 0 这是我的代码 iFloat t floatGetExp iFloat t x return x gt gt 23 0x7f800000 浮点数的指数是
  • numpy einsum() 可以执行外加法吗?

    在numpy中 我们可以在两个向量之间执行 外加法 a and b像这样 a np c 1 2 3 b np c 4 5 6 result a b T alternatively this can be a T b 是否可以使用einsum
  • 如何使用预处理器指令区分编译器的版本

    有没有办法区分使用预处理器指令的编译器版本 我在使用新的 Roslyn 编译器时遇到了问题 它生成的代码与旧编译器不同 我需要保持代码与使用 Visual Studio 2013 和 2015 的团队兼容 None
  • 从角度工厂中的 $resource 响应获取数据

    我有这个工厂 factory Member function resource var endpoint http some valid url function generateMemberToken id1 id2 return res
  • 有没有一种简单的方法可以在文本框中进行单击并拖动滚动?

    我有一个 divoverflow auto和滚动条 我希望能够拖动内容进行滚动 我不需要能够选择文本 是否有捷径可寻 一个 jQuery 插件会很好 否则普通的 JavaScript 就可以了 看来我自己说得还不够清楚 有一个具有固定高度的
  • 检查 API 是否受到监控(挂钩?)

    我的应用程序使用一些 API 例如GetProcAddress and CreateProcess这有时会导致防病毒软件将其标记为恶意软件 即使它不是恶意软件 我想做的是检查特定的 API 是否正在被监视或挂钩 如果是 那么我不会调用该部分
  • 远程登录亚马逊(KDP)

    我想自动化 KDP Kindle 桌面出版 的摘要 由于他们似乎没有任何电子邮件通知系统 至少我不知道 我需要通过curl 登录 但这让我发疯 我在用着简单的htmldom http simplehtmldom sourceforge ne
  • 从 .fits 文件构造 pandas 数据框

    我有一个包含数据的 fits 文件 我想从这个特定文件构建一个 pandas 数据框 但我不知道该怎么做 data fits open datafile data info gives No Name Type Cards Dimensio
  • 使用 h5py 压缩现有文件

    我目前正在开展一个有关 HDF5 数据集压缩的项目 最近开始使用 h5py 我遵循了基本教程 并且能够在创建文件时打开 创建和压缩文件 然而 在压缩现有文件时我一直不成功 这是我工作的目的 我尝试使用 r 打开文件 然后压缩分块数据集 但文
  • 使用 Atmosphere 仅向一位客户端广播

    如何使用 Atmosphere Meteor 将消息从一个客户端广播到另一个客户端 我目前有一个基于 Meteor 教程的实现 Override public void doGet HttpServletRequest req HttpSe
  • 允许进程自动继续的消息框

    我希望显示一个消息框 并且程序继续运行 而不是等待我在此消息框中单击 确定 能做到吗 else Debug or messagebox the line that fails MessageBox Show Cols columns Len
  • Botframework v4:Stepcontext 选项

    您好 有人可以解释一下如何使用瀑布stepcontext Option吗 我一直在示例中看到它 但我不太明白如何使用它 以下是来自的示例 and 我计划重构我的整个代码 并且如果可能的话希望使用此选项 感谢 private static a
  • python threading.Timer立即启动而不是在指定时间

    我想每 3 秒执行一个函数 如果我调用一个不带参数的函数 代码将有效 如下所示 def mytempfunc print this is timer threading Timer 5 mytempfunc start 但是如果我调用一个带
  • 如何在无需用户干预的情况下启用 Chrome 扩展(以编程方式)

    我制作了一个 chrome 扩展 并希望将其安装作为使用 Windows 注册表的软件安装设置的一部分来完成 它安装了 chrome 扩展 但处于禁用状态 扩展程序列在 chrome extensions 中已安装的扩展程序列表中 如何使用
  • python跨不同文件的多处理

    试图更好地理解这一点 https pymotw com 2 multiprocessing basics html https pymotw com 2 multiprocessing basics html 我有 20 多个 大 日志 每
  • RabbitMQ“确认”模式下通道的行为

    我在理解 RabbitMQ 的确认时遇到了一些困难 我看到 RabbitMQ 的以下解释 Notes 如果代理在上述之前崩溃 则会丢失持久消息 消息被写入磁盘 在某些条件下 这会导致 经纪人的行为方式令人惊讶 例如 考虑这个 设想 客户端将
  • PHP 异或字符串

    我看到这段代码来自PPCG 上的回答 https codegolf stackexchange com a 53633 22867 echo BeeABBeeoBodBaBdOdPQBBgDQgDdp n n t8b n n t nb nb
  • 如何指定 Html.TextBox 帮助程序的属性,同时维护从 ViewData 检索值?

    我正在使用 Html TextBox 助手来创建文本框 我想在文本框上设置属性 据我所知 这是使用以下重载完成的 Html TextBox string name object value object htmlAttributes 但是
  • ASP.NET MVC 5 不渲染 jQuery UI CSS 包

    我正在尝试将 jQuery UI CSS 主题包包含在我的项目中 我的文件夹里有所有需要的文件 Content themes目录 并设置我的BundleConfig cs如下 public class BundleConfig For mo
  • Apache CXF Web 服务问题

    我有一个使用 Maven 的多模块项目 在其中一个模块上 我有几个使用 Apache CXF Framework 2 5 4 开发的 Web 服务 目前我有两个 问题 或疑问 首先 如果我调用应返回列表的 Web 服务之一的方法 如果列表为