8

私はWebサービスにまったく慣れていません。

Web サービスの残りの Web サービス クライアントを作成する必要があります。Web サービスは SoapUI で正常に動作します。URL の WSDL ファイルが提供されます。しかし、Eclipse プロジェクトに wsdl ファイルを追加すると、コンパイル エラーが発生します。

src-resolve.4.2: Error resolving component 'xs:schema'. It was detected that 'xs:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:///E:/Ashish%20Workspace/HATStoLSAMS%20Webservice/HATS2LSAMSWS/WebContent/WEB-INF/wsdl/CorpsiteService.svc.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'xs:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:///E:/Ashish%20Workspace/HATStoLSAMS%20Webservice/HATS2LSAMSWS/WebContent/WEB-INF/wsdl/CorpsiteService.svc.wsdl'.

これらのエラーを取り除くために多くのグーグル検索を行いましたが、何も機能しませんでした。エラーを無視して wsimport と wsdl2java コマンドを使用してスタブを作成しようとすると、エラーが発生します

[ERROR] undefined element declaration 'xs:schema'
line 1 of http://chec.local/STAR.WCF/CorpsiteService.svc?singlewsdl

以下のコマンドを使用してスタブを生成しています

wsimport -d e:\test -s E:\wssrc http://chec.local/STAR.WCF/CorpsiteService.svc?singlewsdl -wsdllocation "../../../../../WEB-INF/wsdl/CorpsiteService.svc.wsdl"

私はこの時点で立ち往生しており、一日中苦労しています。これに関するヘルプは本当に役に立ちます

4

4 に答える 4

10

これに対する解決策は、 https://metro.java.net/2.1/guide/Dealing_with_schemas_that_are_not_referenced.htmlxs:schemaで説明されているように、代替バインディングを提供することのようです

具体的には、ネームスペースにインポートされることが多いhttp://www.w3.org/2001/XMLSchemaxsの場合、追加の作業が必要になります。

コマンドは次のようになります。wsimport -b http://www.w3.org/2001/XMLSchema.xsd -b customization.xjb something.wsdl

上記からリンクされたcustomization.xjbはhttps://www.java.net//blog/kohsuke/archive/20070228/xsd.xjbにあるか、以下からコピーされます

このカスタマイズは、スキーマ Schema (複数のスキーマで同じ名前空間としてインポートされる) を使用することで発生する可能性のある名前の競合を処理するために存在します。

カスタマイズ.xjb

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          version="2.0">

  <globalBindings>
    <xjc:simple />
  </globalBindings>

  <bindings scd="~xsd:complexType">
    <class name="ComplexTypeType"/>
  </bindings>

  <bindings scd="~xsd:simpleType">
    <class name="SimpleTypeType"/>
  </bindings>

  <bindings scd="~xsd:group">
    <class name="GroupType"/>
  </bindings>

  <bindings scd="~xsd:attributeGroup">
    <class name="AttributeGroupType"/>
  </bindings>

  <bindings scd="~xsd:element">
    <class name="ElementType"/>
  </bindings>

  <bindings scd="~xsd:attribute">
    <class name="attributeType"/>
  </bindings>
</bindings>

これらのファイルと関連する-bパラメーターを使用してこれを試してみたところ、 wsimport(明らかに) このエラーを乗り越えました (そして他のエラーも)。そうは言っても、私の新しいエラーの一部がこれによって引き起こされていないことを100%確信しているわけではありません(したがって、これは完全な答えではありません)。問題の原因となっている実際の wsdl がなければ、問題を解決する (そして次の問題に進む) ための合理的な推測しかできません。

于 2013-10-01T21:18:43.073 に答える
3

代わりに maven-jaxb2-plugin を使用している場合は、-b スキーマの追加スキーマとして必要な URL を提供します。

<schema>
  <url>https://example.com/WebService.asmx?WSDL</url>
</schema>
<schema>
  <url>http://www.w3.org/2001/XMLSchema.xsd</url>
</schema>

自動的に取得されるようにリソースに保存することもできます

于 2020-04-19T22:00:01.653 に答える