springboot integration cxf webservice encountered pitfalls com.ctc.wstx.exc.WstxEOFException.WstxEOFException.WstxEOFException.WstxEOFException.WstxEOFException: プロローグで予期しないEOFが発生する
2022-02-27 12:10:31
Springbootでwebservicesを統合する必要があり、リリースは公開可能だが、自分で動的に呼び出すと以下のエラーが発生する。
ServiceConstructionException: サービスの作成に失敗しました。 ServiceConstructionException: org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:76) サービスの作成に失敗しました. at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:318) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:244) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:237) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:192) at webservice.CxfClient.main1(CxfClient.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)で実行されます。 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)。 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 原因:javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: com.ctc.wstx.exc.WstxEOFException.WSDLException が発生しました。プロローグで予期しない EOF が発生した at [row,col,system-id]: [1,0,"http://192.168.1.7/services/webservice?wsdl"] となります。 at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:244) at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:165) at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:74) ... 27 more 原因:com.ctc.wstx.exc.WstxEOFException。プロローグで予期しない EOF が発生した at [row,col,system-id]: [1,0,"http://192.168.1.7/services/webservice?wsdl"] となります。 at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:687) at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2220) at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2126) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1181) at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1367) at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1261) at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1189) at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:235) ... 29 moreコードはインターネットから書かれています。以下はwebserviceConfigの呼び出しで、パスに注意してください。
/** * The call to the WebService class */ @Configuration public class WebServiceConfig { @Autowired private IWSFileFileService wsfFileFile; /** * inject servlet bean name can't be dispatcherServlet otherwise it will override dispatcherServlet * @return */ @Bean(name = "cxfServlet") public ServletRegistrationBean cxfServlet() { return new ServletRegistrationBean(new CXFServlet(),"/services/*"); } @Bean(name = Bus.DEFAULT_BUS_ID) public SpringBus springBus() { return new SpringBus(); } /** * Register the WebServiceDemoService interface to the webservice service * @return */ @Bean(name = "WebServiceDemoEndpoint") public Endpoint sweptPayEndpoint() { EndpointImpl endpoint = new EndpointImpl(springBus(), wsfFileFile); endpoint.publish("/webservice"); return endpoint; } }
Springbootがshiroと連携しているため、フィルタリングできるパスにwebserviceのパスが追加されないことが原因です。
だから、このフィルタリングパスにshiroを追加する必要があります:問題解決
関連
-
ブラウザの警告 ダウンロードしたフォントのデコードに失敗しました システムページのフォントアイコンが読み込まれていません(オンライン環境のフォントアイコンが表示されていません)。
-
[問題解決】JSONパースエラー。不正な非引用符合文字 ((CTRL-CHAR, code 13)): を使ってエスケープする必要があります。
-
java.nio.charset.MalformedInputException を解決します。Input length = 1 (mybatisバインディングが失敗する2つの理由)
-
ローカルリソースのロードが許可されていません。エラー解決
-
Springboot2 統合 oauth2
-
Springbootのリターンデータエラー com.fasterxml.jackson.databind.exc.InvalidDefinitionException
-
コマンドラインが長すぎます。
-
springboot起動エラー Could not resolve placeholder
-
JsonParseException: 不正な文字 ((CTRL-CHAR, コード 31))
-
不正な引用符なしの文字((CTRL-CHAR, コード 9)):含めるにはバックスラッシュでエスケープする必要がある i
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン