CXF + spring 的org.apache.cxf.frontend.WSDLQueryException:

文章详细记录了在使用Cxf进行Webservice开发时,与现有Spring应用系统结合时遇到的问题:无法正确获取Spring配置文件中的sessionFactory,并通过分析版本冲突成功解决问题的过程。

之前用jax-ws写了一个webservice,但是和现有SSH的一个应用系统结合后,没法获取spring的application.xml里的sessionFactory配置。只能在WS的构造体里写

// String fs = new File(HyDataWrapperWS.class.getResource("/").getPath()).getParent()+"/webservice.xml";

// Resource rs = new FileSystemResource(fs); 

// BeanFactory factory = new XmlBeanFactory(rs); 

//

// HyDataWrapperWSProcess p = (HyDataWrapperWSProcess)factory.getBean("hydatawrapperwsprocess");

手动的获取bean。并且webservice.xml还得重复一遍定义datasource和sessionfactory。
后来打算用cxf来重新构造webservice,就是看到cxf和spring可以完美结合。
按照apache的标准教程一步一步下来,
http://localhost:8080/hy/service//HyDataWrapperWSService?wsdl但是最后就是没法看到wsdl。
报 has thrown
> exception, unwinding now
>                                  org.apache.cxf.frontend.WSDLQueryException:
> Exception occurred while trying to process
> http://localhost:9081/MortgageGateway/soap/LnSetupLoanService
> 	at 
org.apache.cxf.frontend.WSDLGetUtils.getDocument(WSDLGetUtils.java:248)
> 	at
> org.apache.cxf.frontend.WSDLGetInterceptor.getDocument(WSDLGetInterceptor.ja
> va:158) at
> org.apache.cxf.frontend.WSDLGetInterceptor.handleMessage(WSDLGetInterceptor.
> java:110) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain
> .java:263) at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationOb
> server.java:123) at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDes
> tination.java:207) at
类似的错误。

找了很久,发现原来用jax-ws的时候引用了一个javax.wsdl_1.5.1.v200806030408.jar
现在cxf却有一个wsdl4j-1.6.2.jar包。里面的方法几乎一样。果断把javax.wsdl_1.5.1那个jar删除。一切问题解决。
还是一句老话,java工程里引用的jar包还是千万要注意版本冲突问题。


2025-10-10 10:31:48.084 [main] INFO c.sinosoft.pic.sinopicdeal.test.aa - 短信平台 -- 异常:org.apache.cxf.service.factory.ServiceConstructionException javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:360) at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:349) at javax.xml.ws.Service.getPort(Service.java:169) at com.sinosoft.pic.sinopicdeal.webService.SendSMSServiceImplService.getSendSMSServiceImplPort(SendSMSServiceImplService.java:72) at com.sinosoft.pic.sinopicdeal.test.aa.main(aa.java:66) Caused by: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:360) at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:87) at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:425) at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:527) at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:262) at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103) at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91) at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:158) at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142) at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:492) at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:358) ... 4 more Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 6 counts of IllegalAnnotationExceptions 两个类具有相同的 XML 类型名称 "{http://webservice.sinosoft.com/}sendSMSResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。 this problem is related to the following location: at com.sinosoft.pic.sinopicdeal.webService.jaxws_asm.SendSMSResponse this problem is related to the following location: at com.sinosoft.pic.sinopicdeal.webService.SendSMSResponse at public javax.xml.bind.JAXBElement com.sinosoft.pic.sinopicdeal.webService.ObjectFactory.createSendSMSResponse(com.sinosoft.pic.sinopicdeal.webService.SendSMSResponse) at com.sinosoft.pic.sinopicdeal.webService.ObjectFactory 两个类具有相同的 XML 类型名称 "{http://webservice.sinosoft.com/}sendSMSListResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。 this problem is related to the following location: at com.sinosoft.pic.sinopicdeal.webService.jaxws_asm.SendSMSListResponse this problem is related to the following location: at com.sinosoft.pic.sinopicdeal.webService.SendSMSListResponse at public com.sinosoft.pic.sinopicdeal.webService.SendSMSListResponse com.sinosoft.pic.sinopicdeal.webService.ObjectFactory.createSendSMSListResponse() at com.sinosoft.pic.sinopicdeal.webService.ObjectFactory 两个类具有相同的 XML 类型名称 "{http://webservice.sinosoft.com/}failedSendResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。 this problem is related to the following location: at com.sinosoft.pic.sinopicdeal.webService.jaxws_asm.FailedSendResponse this problem is related to the following location: at com.sinosoft.pic.sinopicdeal.webService.FailedSendResponse at public javax.xml.bind.JAXBElement com.sinosoft.pic.sinopicdeal.webService.ObjectFactory.createFailedSendResponse(com.sinosoft.pic.sinopicdeal.webService.FailedSendResponse) at com.sinosoft.pic.sinopicdeal.webService.ObjectFactory
最新发布
10-11
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceEndpoint' defined in class path resource [port/CxfConfig.class]: Failed to instantiate [jakarta.xml.ws.Endpoint]: Factory method 'userServiceEndpoint' threw exception with message: jakarta.xml.ws.WebServiceException: Could not load Webservice SEI at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:648) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:485) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1355) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971) ~[spring-context-6.1.14.jar:6.1.14] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) ~[spring-context-6.1.14.jar:6.1.14] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.5.jar:3.3.5] at port.PortTestApplication.main(PortTestApplication.java:10) ~[classes/:na] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [jakarta.xml.ws.Endpoint]: Factory method 'userServiceEndpoint' threw exception with message: jakarta.xml.ws.WebServiceException: Could not load Webservice SEI at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:178) ~[spring-beans-6.1.14.jar:6.1.14] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644) ~[spring-beans-6.1.14.jar:6.1.14] ... 19 common frames omitted Caused by: jakarta.xml.ws.WebServiceException: jakarta.xml.ws.WebServiceException: Could not load Webservice SEI at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:373) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:255) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] at port.CxfConfig.userServiceEndpoint(CxfConfig.java:22) ~[classes/:na] at port.CxfConfig$$SpringCGLIB$$0.CGLIB$userServiceEndpoint$0(<generated>) ~[classes/:na] at port.CxfConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.14.jar:6.1.14] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:348) ~[spring-context-6.1.14.jar:6.1.14] at port.CxfConfig$$SpringCGLIB$$0.userServiceEndpoint(<generated>) ~[classes/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ~[spring-beans-6.1.14.jar:6.1.14] ... 20 common frames omitted Caused by: jakarta.xml.ws.WebServiceException: Could not load Webservice SEI at org.apache.cxf.jaxws.support.JaxWsImplementorInfo.initialize(JaxWsImplementorInfo.java:301) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] at org.apache.cxf.jaxws.support.JaxWsImplementorInfo.<init>(JaxWsImplementorInfo.java:60) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:401) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:336) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] ... 30 common frames omitted Caused by: java.lang.ClassNotFoundException: com.example.demo.UserService at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[na:na] at org.apache.cxf.common.classloader.ClassLoaderUtils.loadClass2(ClassLoaderUtils.java:319) ~[cxf-core-4.1.1.jar:4.1.1] at org.apache.cxf.common.classloader.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:279) ~[cxf-core-4.1.1.jar:4.1.1] at org.apache.cxf.jaxws.support.JaxWsImplementorInfo.initialize(JaxWsImplementorInfo.java:299) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] ... 33 common frames omitted
06-28
项目启动 public static void publishService(String address, Class<?> serviceClass, Object serviceImpl) { JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); factory.setAddress(address); factory.setServiceClass(serviceClass); factory.setServiceBean(serviceImpl); factory.create(); } org.apache.cxf.service.factory.ServiceConstructionException: null at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:193) ~[cxf-rt-frontend-simple-4.1.1.jar:4.1.1] at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:210) ~[cxf-rt-frontend-jaxws-4.1.1.jar:4.1.1] at test.prot.CxfServicePublisher.publishService(CxfServicePublisher.java:11) ~[classes/:na] at test.prot.CustomContextListener.contextInitialized(CustomContextListener.java:13) ~[classes/:na] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3993) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4422) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) ~[na:na] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) ~[na:na] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:na] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:870) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.apache.catalina.startup.Tomcat.start(Tomcat.java:437) ~[tomcat-embed-core-10.1.31.jar:10.1.31] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:128) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:107) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:516) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:222) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:188) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:162) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:619) ~[spring-context-6.1.14.jar:6.1.14] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.5.jar:3.3.5] at test.PortTestApplication.main(PortTestApplication.java:10) ~[classes/:na] Caused by: java.io.IOException: Cannot find any registered HttpDestinationFactory from the Bus. at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:286) ~[cxf-rt-transports-http-4.1.1.jar:4.1.1] at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:135) ~[cxf-rt-bindings-soap-4.1.1.jar:4.1.1] at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:86) ~[cxf-core-4.1.1.jar:4.1.1] at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:65) ~[cxf-core-4.1.1.jar:4.1.1] at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:182) ~[cxf-rt-frontend-simple-4.1.1.jar:4.1.1] ... 43 common frames omitted 2025-06-27T18:50:57.743+09:00 ERROR 14324 --- [ main] o.apache.catalina.core.StandardContext : One or more listeners failed to start. Full details will be found in the appropriate container log file 2025-06-27T18:50:57.744+09:00 ERROR 14324 --- [ main] o.apache.catalina.core.StandardContext : Context [] startup failed due to previous errors 2025-06-27T18:50:57.748+09:00 WARN 14324 --- [ main] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [DelayedCachedOutputStreamCleaner] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.base/java.lang.Object.wait0(Native Method) java.base/java.lang.Object.wait(Object.java:366) java.base/java.util.TimerThread.mainLoop(Timer.java:563) java.base/java.util.TimerThread.run(Timer.java:516) 2025-06-27T18:50:57.784+09:00 INFO 14324 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-06-27T18:50:57.788+09:00 WARN 14324 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server 2025-06-27T18:50:57.801+09:00 INFO 14324 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-06-27T18:50:57.825+09:00 ERROR 14324 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.context.ApplicationContextException: Unable to start web server at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:165) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:619) ~[spring-context-6.1.14.jar:6.1.14] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.5.jar:3.3.5] at test.PortTestApplication.main(PortTestApplication.java:10) ~[classes/:na] Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:147) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:107) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:516) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:222) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:188) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:162) ~[spring-boot-3.3.5.jar:3.3.5] ... 8 common frames omitted Caused by: java.lang.IllegalStateException: StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[] failed to start at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.rethrowDeferredStartupExceptions(TomcatWebServer.java:209) ~[spring-boot-3.3.5.jar:3.3.5] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:131) ~[spring-boot-3.3.5.jar:3.3.5] ... 13 common frames omitted
06-28
### Java 中 `org.apache.cxf.interceptor` 包不存在的解决方案 如果在开发过程中遇到 `org.apache.cxf.interceptor` 包缺失的问题,通常是因为项目中缺少 Apache CXF 的相关依赖项。以下是详细的分析和解决方法: #### 1. 检查 Maven 或 Gradle 配置 对于基于 Maven 构建的项目,确保项目的 `pom.xml` 文件中包含了以下依赖项: ```xml <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.4.7</version> <!-- 版本号可以根据实际需求调整 --> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.4.7</version> <!-- 确保版本一致 --> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.4.7</version> <!-- 确保版本一致 --> </dependency> ``` 如果是基于 Gradle 构建的项目,则应在 `build.gradle` 文件中添加如下内容: ```gradle implementation 'org.apache.cxf:cxf-core:3.4.7' implementation 'org.apache.cxf:cxf-rt-frontend-jaxws:3.4.7' implementation 'org.apache.cxf:cxf-rt-transports-http:3.4.7' ``` 这些依赖项提供了核心功能以及 JAX-WS 和 HTTP 支持,能够满足大多数场景下的 Web Service 调用需求。 #### 2. 使用正确的类路径加载机制 如果项目运行环境是 Spring Boot 或其他框架集成的应用程序,请确认已正确配置了类路径扫描范围。例如,在 Spring Boot 应用中可以通过以下方式引入 CXF 功能模块: ```java import org.apache.cxf.Bus; import org.apache.cxf.bus.spring.SpringBus; import org.springframework.context.annotation.Bean; @Configuration public class CxfConfig { @Bean public Bus springBus() { return new SpringBus(); } } ``` 此配置会初始化 CXF 总线并将其注册到 Spring 容器中[^1]。 #### 3. 排查网络或代理问题 当尝试下载 Maven 或 Gradle 所需的依赖时,可能会因为网络连接不稳定或者公司内部防火墙设置而导致失败。可以采取以下措施来解决问题: - **本地仓库缓存**:手动从中央仓库或其他可信源获取所需 jar 文件,并放置于 `.m2/repository/org/apache/cxf/...` 下对应的目录结构中。 - **镜像站点替换**:修改 `settings.xml` (位于用户主目录下的 `.m2` 文件夹内),指定国内可用的镜像地址作为默认源。例如阿里云 Nacos 提供的服务端口支持加速访问国外资源[^3]。 #### 4. 日志调试与验证 启用 CXF 的详细日志记录可以帮助定位具体错误发生的位置及其上下文信息。通过调整 logging.properties 文件中的级别至 FINER 或更高级别即可实现这一点。例如: ```properties org.apache.cxf.level=FINEST org.apache.cxf.logger=java.util.logging.ConsoleHandler ``` 完成以上操作后重新编译部署应用程序,观察控制台输出是否恢复正常行为模式[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值