【发布时间】:2013-10-04 15:10:02
【问题描述】:
使用合同优先的方法,我使用 CXF 从 WSDL 生成了一个 Web 服务。
Tomcat 7 可以很好地加载 Web 服务并正确响应 SOAP 消息。
虽然我了解 WSDL 和 XSD 自动生成的 Java 类,但我不确定我是否知道入口点在哪里(例如,我可以enable validation)。
由于熟悉的 main() 方法只是一个默认入口点并且是 not mandatory,因此我假设 CXF 为此使用了不同的入口点。
当我构建 web 服务时(使用包含 CXF 插件的 pom.xml),只生成了 2 个包(足以建立一个 working web 服务):
- 一个用于 WSDL 本身,仅包含 3 个 Java 模块:ObjectFactory.java、MyBinding.java、MyService.java
- 第二个是 XSD 架构,包含一个 Java 类,用于架构中定义的每个类型。
我怀疑扩展名为Service 的类的MyService.java 是我应该寻找该入口点的地方。但是它是如何发挥“魔力”的呢?
顺便说一句,我尝试从 Tomcat 控制台解决这个问题,但这就是启动时的所有 Web 服务日志:
Oct 4, 2013 11:27:47 AM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
Oct 4, 2013 11:27:47 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing Root WebApplicationContext: startup date [Fri Oct 04 11:27:47 EDT 2013]; root of context hierarchy
Oct 4, 2013 11:27:47 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [beans.xml]
Oct 4, 2013 11:27:47 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf.xml]
Oct 4, 2013 11:27:47 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf-extension-soap.xml]
Oct 4, 2013 11:27:47 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [META-INF/cxf/cxf-servlet.xml]
Oct 4, 2013 11:27:47 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@17392df: defining beans [org.springframework.context.
annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.anno
tation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,cxf,org.apache.cxf.bus.spring.BusWiringBeanF
actoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.binding.soap.SoapBindin
gFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,myserviceWS,myserviceBinding]; root of factor
y hierarchy
Oct 4, 2013 11:27:47 AM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
INFO: Creating Service {http://myws.example.com/ns}MyService from WSDL: file:/C:/Users/Daniel/myws/src/main/wsdl/myws.wsdl
Oct 4, 2013 11:27:48 AM org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be /myservice/soap
Oct 4, 2013 11:27:48 AM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 1107 ms
CXF 似乎很好地隐藏了实现细节,但我想知道在哪里挂钩我的初始化自定义。
【问题讨论】:
标签: jakarta-ee wsdl cxf wsdl2java contract-first