问题标签 [saaj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4392 浏览

web-services - saaj 异常 - 无法解析内容类型:null

我对 web 服务还很陌生,并且正在研究发送和接收附件(二进制文件)的 SAAJ 示例。我可以在客户端发送文件时让它工作,但在它请求它时不能。我在客户端遇到异常:
错误:“序言中不允许内容。” 2012 年 10 月 24 日 13:59:28 com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory createEnvelope 严重:SAAJ0511:无法从给定源 com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl 创建信封: 无法从给定来源创建信封

任何人有任何想法???我的客户端代码如下:

服务器代码如下所示:

putHeaders 看起来像:

0 投票
2 回答
3838 浏览

java - SOAPMessage 对象中的信封字段为空

我正在尝试调用一些 WS。我的本地机器上有服务器和客户端。我 100% 确定消息的内容,它来自服务器到客户端,没有任何变化。问题是客户端创建的SOAPMessage对象不正确,soapPart 下的信封字段等于 null。

客户端代码:

服务器端代码:

Id 调试窗口我看到以下内容:

1) 服务器端调试窗口

服务器端调试窗口

2) 客户端调试窗口

客户端调试窗口

我正在使用 SAAJ 进行通信和 JDK 1.6。

有人可以协助解决这个问题吗?

0 投票
0 回答
371 浏览

java - 在 Axis2 SAAJ 中使用附件缓存

我正在升级应用程序内的现有 SOAP 堆栈(客户端和服务器端),以通过使用 SOAP 附件(SwA 或 MTOM)来支持二进制内容。现有代码库广泛利用 SAAJ,并使用 Axis2(目前是 1.5.6)实现。(应用程序的其他部分已经使用 Axis2,因此坚持使用它似乎是合理的)。

通过 SAAJ API(添加节点、元素、SOAPAttachments 实例...)构建 SOAPMessage 时,一切正常。序列化的 SOAPMessage 确实是一个正确的 xop/mtom 消息。

当通过 Axis2 的 MessageFactory 解析像 InputStream 这样的消息时出现了我的问题(不,我们不使用 AxisServlet/Endpoint,我们有时会直接解析原始流)。它可以工作(我取回了一个功能上等效的 SOAPMessage 实例),但我希望 Axis2 使用(axiom 的底层)附件缓存功能,以免附件读入主内存,我无法做到这一点。

根据我对 Axis2 在axis-saaj.jar 中的实现的理解,似乎 SOAPMessageImpl 被硬编码以在没有启用缓存功能的情况下实例化 Axiom Attachments 实例,而且看起来没有可配置的方式(axis conf 文件、系统属性、专有扩展messagefactory,无论如何......)来改变这种行为。

我错过了什么吗?没有办法使用带有附件缓存的axis-saaj(或从InputStream 到SOAPMessage 实例的任何其他方式)?我几乎找不到关于axis2-saaj 的文档,而且到目前为止,Axis User ML 对此保持沉默。

谢谢!

0 投票
1 回答
1334 浏览

java - 加载 saaj 类库的问题

我做了功课,但仍然无法找到解决问题的方法。我通过 NetBeans 创建了一个 WAR 文件,它使用带有附件的肥皂 - saaj 技术。按照建议,我在我的项目中包括:saaj-impl.jar、saaj-ri.jar、saaj-api.jar。但是,当我“热部署”或将 WAR 文件放入 webapps 目录时,会出现以下异常:

我试图像这样明确指出类路径:

我做了更多研究并尝试调用类加载器:

但仍然与上述相同的例外。这很奇怪,因为当我重新启动服务器时,有时应用程序工作正常 - 收到 SOAP 响应并显示结果,但只有在我重新启动服务器之后。这暗示了当服务器重新启动时以某种方式找到 saaj 类的事实?但是,问题是当我“热部署”或将更新的 WAR 放入 webapps 目录而不重新启动时它必须工作。每次更新 WAR 时,我们都无法重新启动生产服务器。

另一个奇怪的问题是,在我重新启动服务器后,启动这个 WAR 应用程序它工作正常。但是,使用相同 saaj 类库的其他应用程序会抛出同样的异常!因此,要么使用此 WAR 应用程序而其他应用程序不工作,要么使用其他应用程序并且此 WAR 应用程序抛出此异常。是否存在某种有限的 saaj 库共享?我以前从未见过这样的事情。

拜托,有人可以帮我解决这个非常奇怪(和讨厌)的问题吗?

谢谢你,维克多。

0 投票
1 回答
14950 浏览

soap - MTOM 和 SAAJ 提供的附件功能有什么区别?

SAAJ:带有 Java 附件 API 的 SOAP

MTOM: SOAP消息传输优化机制

我的简单理解:它们处理 SOAP 附件,MTOM 是 SAAJ 的更优化版本。这个对吗?

他们只是做同一件事的两种不同方式吗?还是我想在这里比较苹果和橘子?

我可以同时使用 SAAJ 和 MTOM 吗?

0 投票
1 回答
1569 浏览

java - 从 SOAP 附件中提取的 ZIP 文件损坏

我正在使用帮助我从消息中心获取文件的 Web 服务。文件类型可以是 XML 或 ZIP。

对于 ZIP 文件,内容类型为二进制。

我有这段代码:

}

现在,该代码可以很好地获取 XML 文件,尽管对于 ZIP 文件,该文件被证明是损坏的。我使用来自 Messaging Hub 的文件实用程序下载了相同的文件,并发现我通过 SOAP 附件获取的文件大小比其实际大小大约多 4 个字节。

更新:附件编码为 7 位(如果这可能会造成阻碍),而另一个包含另一个 zip 的附件编码为 Quote-printable。两个 zip 都是从同一个 Web 服务中获取的(尽管它们的编码不同),并且都损坏了。

编辑:我强烈认为问题出在我接收文件的编码上,这是实际文件和接收到的附件文件之间的比较。

实际文件大小:9031 字节收到的附件文件大小:9066 字节

我尝试在文档编辑器中比较这两个文件以找出两者之间的差异。原始文件到获取的附件文件差异(二进制编辑器):

ed 更改为 3f , db 更改为 3f , d6 更改为 3f , 85 更改为 3f , d0 更改为 3f ,

等等。

Zip 文件包含一个 PDF 和一个 XML 文件。

两个文件的起始行类似,以PK开头

0 投票
4 回答
530604 浏览

java - 如何从 Java 类调用 SOAP Web 服务?

我对 web 服务世界比较陌生,我的研究似乎让我感到困惑而不是启发我,我的问题是我得到了一个库(jar),我必须用一些 web 服务功能扩展它。

该库将共享给其他开发人员,并且 jar 中的类将是具有调用 web 服务的方法的类(本质上设置类的属性,执行一些业务逻辑,例如将对象存储在 db 中,等,并发送回带有这些修改的对象)。我想让对这个服务的调用尽可能简单,希望尽可能简单,以便使用该类的开发人员只需要这样做。

我一直在研究 JAX-WS 以在服务器上使用,但在我看来,我不需要wsimport在服务器或wsimport客户端上创建一个,因为我知道两者都有类,我只需要类之间的一些交互在服务器和客户端共享。你认为在课堂上做 web 服务和调用有什么意义?

0 投票
1 回答
17313 浏览

java - Java SAAJ 基本身份验证

我有一个基本的 SOAP 服务端点,实际上是 SAP ECC,它提供了一个服务。我已经使用 SOAPUI 4.5 测试了该服务,并且使用 HTTP Auth 可以正常工作,从外观上看是先发制人的。我看到一个出站“Authorization:Basic BASE64”并且服务做出了适当的响应。

我现在正试图将其滚动到 Java 中。我认为我会采用 SAAJ 方法:

但是我找不到添加 HTTP 身份验证的方法。我相信 SAAJ 提供了控制 SOAP 消息的方法,但是如何添加身份验证呢?是否有任何替代方案值得考虑?

0 投票
1 回答
2007 浏览

java - 无法使用 CXF/MTOM 接收所有文档

我正在尝试做非常简单的事情:客户端通过其 WSDL 调用 SOAP 服务来加载 PDF 文档。

我正在使用 Apache CXF 2.7.5MTOM

问题是文档似乎没有完全发送到客户端(文件大小不等于原始文件),因此 ADOBE 无法打开它,因为它已损坏。

我的单元测试和 SOAPUI 调用都失败了。

如果问题的标题必须改进,欢迎您

提前致谢。

服务接口

服务实施

PDF数据源

值对象

单元测试(让客户端调用)

异常堆栈

SOAPUI httpLog链接到 pastebin SOAP UI http 日志

0 投票
2 回答
15084 浏览

java - 在有效的 SOAP SAAJ 信封中使用默认命名空间

这两条肥皂信息有效吗?不同的部分是命名空间属性 xmlns="http://www.sigvalue.com/acc"。第一个soap是一个示例,第二个由java代码生成以制作相同的soap消息。

.

如果第二个肥皂无效,我怎样才能使它与第一个相同?GetNGPList.addNamespaceDeclaration("xmlns"," http://www.sigvalue.com/acc "); 这条线没有按预期工作。这是JAVA代码: