我正在努力让一个肥皂网络服务在我的嵌入式码头服务器上运行。
我遵循了这个德语教程(ofc不起作用): http://www.torsten-horn.de/techdocs/jee-jax-ws.htm#Deployment-im-Webserver
相关代码片段:
Endpoint ep = Endpoint.publish( url, new BuecherServiceImpl() );
int anzahlBuecherResult = TestWsClient.test( "WsMitEndpointIntegrTest", url, 4000000000L, anzahlBuecher, true );
public static int test( String testName, String url, long startIsbn, int anzahlBuecher, boolean trace ) throws Exception
{
BuecherServiceIntf buecherService;
if( url.equalsIgnoreCase( "direkt" ) ) {
buecherService = new BuecherServiceImpl();
} else {
System.out.println( testName + ": " + url );
Service service = null;
int timeoutSekunden = 20;
while( service == null ) {
try {
//here …Run Code Online (Sandbox Code Playgroud) 我在 Web Sphere 服务器上部署了一个 jax-ws Web 服务,当我尝试使用 url 在浏览器中访问 wsdl 时
"Http://localhost:7001/HelloWorldService/port/helloworld?wsdl"
Run Code Online (Sandbox Code Playgroud)
我看到网址已更改为以下网址
"Http://localhost:7001/HelloWorldService/port/helloworld/HelloWorldService.wsdl"
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下.wsdl 和 ?wsdl 之间的区别以及需要做什么才能保持 url 与 ?wsdl 相同而不是更改为 .wsdl 吗?
策略断言“{ http://schemas.xmlsoap.org/ws/2005/07/securitypolicy }EncryptedParts”被评估为“未知”。[com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives
我在尝试访问网络服务时收到此警告,解决此问题的最佳解决方案是什么?
在我们的应用程序中,我们有以下代码行向服务发出 SOAP 请求
@WebResult(
name = "GetRequestResponse",
targetNamespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1",
partName = "parameters"
)
GetRequestResponse getRequest(@WebParam(name = "GetRequestRequest",targetNamespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1",partName = "parameters") GetRequestRequest var1) throws InvalidContentException, SMEVFailureException, SenderIsNotRegisteredException, SignatureVerificationFaultException, UnknownMessageTypeException;
Run Code Online (Sandbox Code Playgroud)
它曾经一直有效,直到服务将其响应内容类型从 更改text/xml为text/plain
它仍然返回有效的 XML,但只是在text/plain
我不想大幅修改代码,因为它是一个非常古老且过时的遗留库,专门用于向服务发出请求(另外,我不确定是否有可以替代它的东西)
总而言之,我们得到以下异常:
ru.voskhod.smev.message_exchange_service_client.WebServiceClientException: com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/plain;charset=utf-8 Supported ones are: [text/xml]
at ru.voskhod.smev.message_exchange_service_client.MessageExchangeEndpoint.getRequest(MessageExchangeEndpoint.java:457)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它接受text/plain并以同样的方式对待它text/xml?
我们开发的 Java 应用程序仍然需要 Java 8 才能运行,并且计划支持 Java 11。为此,我们必须找到与已删除的 xml 和 Web 服务相关的类的替代品(请参阅JEP 320)。我们下载了所需的所有 jar,但是当我们尝试连接到 Web 服务时,出现以下错误:
MASM0004: No <tubelines> section found in the default [ jaxws-tubes-default.xml ] configuration file
Run Code Online (Sandbox Code Playgroud)
比较 Java 8 中的 jaxws-tubes-default.xml 文件和我们收集的 jar 文件,我们发现它们的内容几乎相同,除了包名称略有不同。
据我们所知,发生这种情况是因为文件解组器将 xml 内容读取到类的错误属性中com.sun.xml.ws.runtime.config.MetroConfig。从 xml 读取的对象Tubelines未设置在tubelines属性上。相反,它是在any属性上设置的。
深入调试代码,我们可以看到在 Java 8 上该tubelines属性与命名空间“http://java.sun.com/xml/ns/metro/config”相关联,但在 Java 11 上则不然。
我们无法进行更深入的挖掘,也无法在网络上找到任何相关信息。
有谁知道可以帮助我们按预期解析文件吗?
编辑: 有人建议我的问题与此重复,但事实并非如此。链接的问题解释了 Java 11 带来的变化。我的问题是关于我在执行这些步骤时发现的问题。我们遇到的问题并未在该问题中得到解决。
我使用 spring-boot-starter-webservices 使用 spring 创建了一个 ws 端点。
我用过@org.springframework.ws.server.endpoint.annotation.Endpoint,效果很好。
但是当我尝试将寻址标头添加到带有服务器打印的wsa:ReplyTo请求时:mustUnderstand=true
无法处理 MustUnderstand 标头:{http://www.w3.org/2005/08/addressing}ReplyTo。返回故障
并返回类似的故障作为响应。
如何启用寻址以便ReplyTo被理解并回复202,将响应发送到中描述的不同端点ReplyTo?
我尝试添加@javax.xml.ws.soap.Addressing(enabled=true)旁边的@Endpoint注释,但我仍然得到上述行为。
我的Web服务方法返回一个Page对象,其中包括以下方法:
public Map<String,String[]> getParameters() { ... }
public setParameters(Map<String,String[]> parameters) { ... }
Run Code Online (Sandbox Code Playgroud)
在客户端,JAX-WS生成的getParameters()方法返回一个Parameters对象,该对象提供getEntry()返回a 的方法List<Entry>.但是,此列表始终为空.原因是什么?
我正在开发一个WebService的客户端应用程序,我在jar中有相应的WSDL文件.
我正在使用ant从wsdl生成带有以下build.xml的java代码:
<project name="wsimport" default="wsimport" basedir=".">
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" />
<target name="wsimport">
<echo message="Starting wsimport"/>
<mkdir dir="target/generated-sources/jaxws-wsimport"/>
<wsimport
wsdl="???"
sourcedestdir="target/generated-sources/jaxws-wsimport"
extension="true"
verbose="true"
target="2.0"
xnocompile="true"
catalog="src/jax-ws-catalog.xml"
wsdlLocation="/MyWebService/MyWebServiceV1_0?wsdl">
<binding dir="src/main/resources/bindings/v1_0" includes="*.xml"/>
<xjcarg value="-XhashCode"/>
<xjcarg value="-Xequals"/>
<xjcarg value="-XtoString"/>
</wsimport>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
如何从jar加载WSDL文件?WSDL引用了一个XSD,它也在同一个jar中.
我正在阅读有关Web服务中的消息交换模式(MEP)的信息.
我遇到了一个名为的模式Solicit Response.
我用Google搜索了它,但没有找到关于它及其用法的更多信息.
任何人都可以给我详细介绍这个及其使用场景.
提前致谢.
我用Apache CXF工具wsdl2java生成了Java代码.在我的服务评论中,它说我应该支持Jaxws API 2.2,但不知道它意味着什么.在我的Maven POM中我有这个:
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在构建时,我在Maven中遇到这些错误:
找不到符号符号:构造函数服务(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature [])
我检查了JAX-WS API 2.2,它实际上有这个构造函数......我该怎么办?
jax-ws ×10
java ×6
web-services ×5
soap ×2
wsdl ×2
content-type ×1
cxf ×1
endorsed ×1
jakarta-ee ×1
java-11 ×1
jetty ×1
map ×1
maven ×1
maven-3 ×1
spring ×1
spring-boot ×1
websphere ×1