2017-11-24 26 views
2

私はJBOSS EAPにSOAPクライアントを配備しようとしている問題を取得していますスキーマの場所を解決7.0.8参照のXSDスキーマの場所を解決しようとするときには、問題が発生していると思わ問題デプロイSOAPクライアント

WSDLで

エラー・スタックは、解決しようとしているアドレスは、文字のデコードに問題があることを示しています。 http://を示すURLの最初ではなく、 ':'は '%3A'でエンコードされ、最初のスラッシュは2番目にエスケープされています(私は思う)

デプロイメントで特定のWebサービスライブラリをデプロイしません。 EAPを含むものと提供されたWebサービスの実装。

10:04:30,890 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."ProvideDocs-0.0.1-SNAPSHOT.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."ProvideDocs-0.0.1-SNAPSHOT.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "ProvideDocs-0.0.1-SNAPSHOT.war" 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.RuntimeException: JBWS024076: Service {http://company.uk/integration/claimsverification/PolicyInfoAPI}PolicyInfoAPI, cannot publish wsdl to: C:\jboss-eap-7.0.0\standalone\data\wsdl\ProvideDocs-0.0.1-SNAPSHOT.war\http%3A\qa3gwap01.bolt.company.uk%3A8080\pcsor\ws\com\company\uk\integration\claimsverification\PolicyInfoAPI%3Fwsdl 
    at org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher.publishWsdlFiles(WSDLFilePublisher.java:115) 
    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.publishContractToFilesystem(EndpointImpl.java:148) 
    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:85) 
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:255) 
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:543) 
    at org.jboss.wsf.stack.cxf.configuration.BusHolder.configure(BusHolder.java:235) 
    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.startDeploymentBus(BusDeploymentAspect.java:97) 
    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.start(BusDeploymentAspect.java:59) 
    at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.deploy(AspectDeploymentProcessor.java:73) 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165) 
    ... 5 more 
Caused by: java.io.IOException: JBWS022092: Could not resolve http%3A/qa3gwap01.bolt.company.uk%3A8080/pcsor/ws/com/company/uk/integration/claimsverification/../../../../../gw/xsd/backoffice/soapheaders.xsd in deployment ProvideDocs-0.0.1-SNAPSHOT.war 
    at org.jboss.ws.common.deployment.ResourceResolverImpl.resolve(ResourceResolverImpl.java:128) 
    at org.jboss.ws.common.utils.AbstractWSDLFilePublisher.publishSchemaImports(AbstractWSDLFilePublisher.java:240) 
    at org.jboss.ws.common.utils.AbstractWSDLFilePublisher.publishSchemaImports(AbstractWSDLFilePublisher.java:265) 
    at org.jboss.ws.common.utils.AbstractWSDLFilePublisher.publishSchemaImports(AbstractWSDLFilePublisher.java:269) 
    at org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher.publishWsdlFiles(WSDLFilePublisher.java:100) 
    ... 14 more 

答えて

1

いくつかのものは、私が最初に考えることができますがあります:// ':'

  • ではなく、HTTPを示すURLの先頭

      は '%3A' でエンコードされており、最初のスラッシュが

  • (と思う)は、第2のエスケープされますが正しくありません。エスケープは\のためではない/ために行くが、それはエラーメッセージとちょうど混乱も(おそらくそれがある)、あるいはどこかにWSDL/XSDスキーマの場所でHTTPのように構成することができます/qa3gwap01.bolt.company.ukない... http://qa3gwap01.bolt.company.uk

    あなたが持つ可能性のあるスキーマの場所の定義をすべて確認してみてください。

  • (最初のものに関連の一種) いずれか:

    • WSDL/XSDにどこではない../../../../../gw/xsd/backoffice/soapheaders.xsd又は
    • への相対パスとして定義されたスキーマの場所が存在します
    • soapheaders.xsdは、そのスキーマの場所であるWSDL/XSDファイルからのパスにありません。
  • (つまりわからないが...)私はJBossでEAR/WARファイルは、ファイルシステムに、しかし、独自のVFSファイルシステムに直接ではない爆発覚えているとして、スキーマの場所に非常に絶対パスすることができません利用される。スキーマの場所を相対パスとして保持し、定義されているWSDL/XSDから使用可能であることを確認してください。

  • XSDは、いくつかの実際のHTTP(S)URL上で、あなたはそれはあなたがそれに正しいURLを持っている必要があり、すべての時間を利用できるようになることを確信している場合。より良い方法は、WAR/EARファイルの内部にXSDを置いて、相対パスでそれらを指し示すことです。実行時に外部URLに依存するのは良い考えではありません。
  • +0

    まず最初は、すべてのスキーマの場所及びその接近しました。私は相対パスXSDで別のWebサービスをセットアップしても、それは私に同じ問題をもたらしました。現時点では、私はこれを稼働させることに成功しましたが、wsdlのローカルコピーと多くのxsdのローカルコピーを使用していました。私は、この問題を解決しようとしているRed Hatの事例を開いています。 – shawsy

    +0

    私はそれが唯一の解決策だと思います... BTWはかつて、EAP 6のSpringスキーマと同様の問題を抱えていましたが、EAPはインターネットからSpringスキーマを取得しようとしましたが、SpringはスキーマロケーションマッピングjarファイルのMETA-INF/spring.schemasから取得します。解決策は、 'jboss-deployment-structure.xml'の' deployment/sub-deployments'のために 'META-INF **'をインポートしてクラスパスにそのファイルを置くことでしたが、それはSpring特有のものでした...まだ私は、ローカルのコピーをどこか正しいと思っているのではなく、ネットワークからスキーマを取得していると思います... – Vadim

    +0

    また、JARファイルとして、すべてのWSDLとXSD(関連スキーマの場所を含む)をカスタムJBossモジュールにパッケージ化しました。 'jboss-deployment-structure.xml'で依存関係を参照し、classPathからそれらを参照します。そして、はい、彼らの多くはそこにいます... – Vadim

    1

    WARでWSDLとXSDをバンドルし、xmlカタログファイルを使用してWSDLのローカルXSDへのインポートを解決します。 これを行う方法がわからない場合は、Netbeansに試してみることをおすすめします。彼らはあなたのためにこれすべてを行う素晴らしいウィザードを持っています。

    を参照してください:私がチェックhttps://netbeans.org/kb/docs/websvc/client.html#exploringthefacilities

    関連する問題