当前位置: 首页 > 知识库问答 >
问题:

JAX-WS生成的wsdl的命名空间问题

柯苗宣
2023-03-14

我在tomcat服务器上部署了一个web服务,并为其生成了一个wsdl文件。

后来,我通过wsdl生成了一个新的soap项目,并对服务器执行了一个soap请求。

这里的问题是在服务器端,xml的解组失败,因为“输入数据”和“CCNA”的命名空间前缀是错误的。目前是cfa。

根据java代码,InputData的命名空间是xs,CCNA是bim。所以,如果我修改了soap请求,服务器端的解组就可以了。

那么,问题出在哪里呢?WSDL生成还是JAX WS中的任何其他地方?我不应该修改我的皂请求。

SOAP请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfa="http://cfa.ni.ctl.com/" xmlns:bim="http://www.qwest.com/XMLSchema/BIM" xmlns:xs="http://www.qwest.com/XMLSchema">
   <soapenv:Header/>
   <soapenv:Body>
      <cfa:getCFACircuit>
         <!--Optional:-->
         <CFACircuitRequest>
            <bim:RequestId>123</bim:RequestId>
            <bim:WebServiceName>123</bim:WebServiceName>
            <bim:RequestPurpose>123</bim:RequestPurpose>
            <bim:AuthorizationInfo>
               <!--Optional:-->
               <bim:ApplicationId>123</bim:ApplicationId>
               <!--Optional:-->
               <bim:UserId>123</bim:UserId>
               <!--Optional:-->
               <bim:Userid>123</bim:Userid>
               <bim:Password>123</bim:Password>
            </bim:AuthorizationInfo>
            <!--Optional:-->
            <bim:TargetSchemaVersionUsed>
               <!--Optional:-->
               <bim:TargetXSDName>123</bim:TargetXSDName>
               <!--Optional:-->
               <bim:MajorVersionNumber>123</bim:MajorVersionNumber>
               <!--Optional:-->
               <bim:MinorVersionNumber>123</bim:MinorVersionNumber>
            </bim:TargetSchemaVersionUsed>
            <!--Optional:-->
            <bim:TimeOutSecond>123</bim:TimeOutSecond>
            <!--Optional:-->
            <bim:SendTimeStamp>123</bim:SendTimeStamp>
            <cfa:InputData>
               <cfa:CCNA>123</cfa:CCNA>
               <xs:CableKey>
                  <!--Optional:-->
                  <xs:LowUnit>123</xs:LowUnit>
                  <!--Optional:-->
                  <xs:HighUnit>123</xs:HighUnit>
                  <!--Optional:-->
                  <xs:CableId>123</xs:CableId>
                  <!--Optional:-->
                  <xs:CableSubPath>123</xs:CableSubPath>
                  <!--Optional:-->
                  <xs:CLLIALocation>123</xs:CLLIALocation>
                  <!--Optional:-->
                  <xs:CLLIZLocation>123</xs:CLLIZLocation>
               </xs:CableKey>
            </cfa:InputData>
         </CFACircuitRequest>
      </cfa:getCFACircuit>
   </soapenv:Body>
</soapenv:Envelope>

服务器上输入数据的XML注释为:

@XmlElement(name = “InputData”, namespace = “http://www.qwest.com/XMLSchema”, required = true)

共有2个答案

孔嘉茂
2023-03-14

Ajay,你的注释是:

@XmlElement(name = “InputData”, namespace = “http://www.qwest.com/XMLSchema”, required = true)

但是在XML请求中,元素InputData属于名称空间“http://cfa.ni.ctl.com/”。

您需要修复注释。

屈浩波
2023-03-14

我猜您的XML请求不正确。请先尝试根据XML模式验证您的请求。

使用哪个命名空间前缀并不重要,但需要确保 XML 元素与相应的命名空间匹配。

 类似资料:
  • 我在Visual Studio中从第三方WSDL添加了一个服务引用,但它不是创建代理类,而是创建一个具有空名称空间的文件: WSDL地址是http://wwwh.cnj.jus.br/sgt/sgt_ws.php?WSDL 我该怎么修好它? 更新: 我运行了命令

  • 我有一个JAX-WS注释的Web服务,当我将其部署到WildFly 8.1.0 Final中时,我有如下内容: 当我想要这样的东西时: 因此,基本上,我希望WildFly/JAX-WS将一些类型放在一个单独的XSD模式文件中,而不是仅仅在WSDL文件中显示它们。 我可以通过一些注释或一些配置文件来执行此操作吗?

  • 我有一个JAX-WS导入的WSDL客户机。当我尝试连接到webserviceendpoint时,JAX-WS客户端尝试加载WSDL。为什么? 我不想在我的项目中存储WSDL, 我不想再次从webservice URL加载WSDL? 问题: 有机会绕过这种行为吗? 如何在运行时添加webserviceendpointURL? 添加具有相同QName和端口名的端口失败,因为我无法添加相同的QName和

  • 尝试基于两个唯一的字符串生成客户端Id。这应该与服务器中从相同的ID生成的UUID相同。 使用Javascript,它看起来像这样: 似乎找不到在Swift上生成这个的方法,NSUUID只能从无到有生成UUID 我正在寻找这样的东西: 编辑 例:

  • 我试图找到一种使用Azure管理API、cmdlet或REST API创建Azure Servicebus命名空间的方法,以便可以为部署创建可重复的脚本。目前,我知道如何创建Servicebus命名空间的唯一方法是通过Azure门户。 是否有一种可编写脚本(c#,powershell)的方法来使用azure门户创建新的azure servicebus w/o? 这里有一些我已经读过的链接: Azu

  • 如果有一个相当大的模式在多个Web服务中使用,那么我想将XSD编译与WSDL编译分开。在一个简化的示例中,一步编译可以: 编译xsd并使用生成的剧集文件不起作用: 那么如何在wsimport中使用预编译的模式呢? 附录:在另一个模式中使用该剧集可以工作,并避免新的编译 (d3.jar包含来自模式 3 模式 3.episode 的生成类作为 META-INF/太阳-jaxb.episode): 没有