在tomcat作为容器发布webservice服务前,我们先来看一个简单的不通过容器即可发布服务的例子
package com.tree.webservice; import javax.jws.WebService; @WebService public interface HelloWorld { public String sayHello(String content); }
package com.tree.webservice.impl; import javax.jws.WebService; import com.tree.webservice.HelloWorld; @WebService(endpointInterface="com.tree.webservice.HelloWorld") public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String content) { // TODO Auto-generated method stub return "Hello "+content; } }
package com.tree.webservice.publish; import javax.xml.ws.Endpoint; import com.tree.webservice.HelloWorld; import com.tree.webservice.impl.HelloWorldImpl; public class PublishService { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Service is begin ..."); HelloWorld hw = new HelloWorldImpl(); Endpoint.publish("http://localhost:8080/hw", hw); System.out.println("Server is OK ..."); } }
下面再来看如何调用该发布的服务
package com.tree.webservice.publish; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.tree.webservice.HelloWorld; public class CallWs { public static void main(String args[]) { System.out.println("Begin to call the service ..."); JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean(); factoryBean.setServiceClass(HelloWorld.class); factoryBean.setAddress("http://localhost:8080/hw"); HelloWorld hwService = (HelloWorld)factoryBean.create(); String result = hwService.sayHello(" chiweitree"); System.out.println(result); } }
控制台输出
Begin to call the service ... 2014-09-16 09:20:00,358 - org.apache.cxf.common.logging.LogUtils -0 [main] DEBUG - Using org.apache.cxf.common.logging.Log4jLogger for logging. 2014-09-16 09:20:00,842 - org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean -484 [main] INFO - Creating Service {http://webservice.tree.com/}HelloWorldService from class com.tree.webservice.HelloWorld 2014-09-16 09:20:01,418 - org.apache.cxf.jaxb.JAXBDataBinding -1060 [main] DEBUG - Created JAXBContext "jar:file:/home/hadoop/mydisk/maven_repo/com/sun/xml/bind/jaxb-impl/2.2.7/jaxb-impl-2.2.7.jar!/com/sun/xml/bind/v2/runtime/JAXBContextImpl.class Build-Id: 2.2.7 Classes known to this context: [B boolean byte char com.sun.xml.bind.api.CompositeStructure com.tree.webservice.jaxws_asm.SayHello com.tree.webservice.jaxws_asm.SayHelloResponse double float int java.awt.Image java.io.File java.lang.Boolean java.lang.Byte java.lang.Character java.lang.Class java.lang.Double java.lang.Float java.lang.Integer java.lang.Long java.lang.Object java.lang.Short java.lang.String java.lang.Void java.math.BigDecimal java.math.BigInteger java.net.URI java.net.URL java.util.Calendar java.util.Date java.util.GregorianCalendar java.util.UUID javax.activation.DataHandler javax.xml.bind.JAXBElement javax.xml.datatype.Duration javax.xml.datatype.XMLGregorianCalendar javax.xml.namespace.QName javax.xml.transform.Source long short void " with classes [class com.tree.webservice.jaxws_asm.SayHello, class com.tree.webservice.jaxws_asm.SayHelloResponse]. 2014-09-16 09:20:01,790 - org.apache.cxf.resource.DefaultResourceManager -1432 [main] DEBUG - resolving resource <org.apache.cxf.wsdl11.WSDLManagerImpl/bus> type <interface org.apache.cxf.Bus> 2014-09-16 09:20:01,790 - org.apache.cxf.resource.DefaultResourceManager -1432 [main] DEBUG - resolving resource <null> type <interface org.apache.cxf.Bus> 2014-09-16 09:20:02,115 - org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -1757 [main] DEBUG - building handler chain 2014-09-16 09:20:02,115 - org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -1757 [main] DEBUG - Checking for HandlerChain annotation on com.tree.webservice.HelloWorld 2014-09-16 09:20:02,115 - org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder -1757 [main] DEBUG - no HandlerChain annotation on interface com.tree.webservice.HelloWorld 2014-09-16 09:20:02,131 - org.apache.cxf.endpoint.ClientImpl -1773 [main] DEBUG - Invoke, operation info: [BindingOperationInfo: {http://webservice.tree.com/}sayHello], params: [ chiweitree] 2014-09-16 09:20:02,133 - org.apache.cxf.endpoint.ClientImpl -1775 [main] DEBUG - set requestContext to message be{java.lang.reflect.Method=public abstract java.lang.String com.tree.webservice.HelloWorld.sayHello(java.lang.String), org.apache.cxf.jaxws.context.WrappedMessageContext.SCOPES={org.apache.cxf.message.Message.ENDPOINT_ADDRESS=APPLICATION}, org.apache.cxf.message.Message.ENDPOINT_ADDRESS=http://localhost:8080/hw} 2014-09-16 09:20:02,137 - org.apache.cxf.endpoint.ClientImpl -1779 [main] DEBUG - Interceptors contributed by bus: [[email protected]] 2014-09-16 09:20:02,141 - org.apache.cxf.endpoint.ClientImpl -1783 [main] DEBUG - Interceptors contributed by client: [] 2014-09-16 09:20:02,141 - org.apache.cxf.endpoint.ClientImpl -1783 [main] DEBUG - Interceptors contributed by endpoint: [[email protected], [email protected], [email protected]aacf6, [email protected]] 2014-09-16 09:20:02,141 - org.apache.cxf.endpoint.ClientImpl -1783 [main] DEBUG - Interceptors contributed by binding: [[email protected], [email protected], org.apa[email protected]34741c9d, [email protected], [email protected], org.ap[email protected]75831760, [email protected]be5] 2014-09-16 09:20:02,141 - org.apache.cxf.endpoint.ClientImpl -1783 [main] DEBUG - Interceptors contributed by databinding: [] 2014-09-16 09:20:02,152 - org.apache.cxf.phase.PhaseInterceptorChain -1794 [main] DEBUG - Adding interceptor [email protected] to phase setup 2014-09-16 09:20:02,159 - org.apache.cxf.phase.PhaseInterceptorChain -1801 [main] DEBUG - Adding interceptor [email protected] to phase prepare-send 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected] to phase pre-logical 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected]aacf6 to phase pre-logical 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected] to phase pre-logical 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected] to phase pre-stream 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected] to phase pre-stream 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor org.apa[email protected]34741c9d to phase pre-logical 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected] to phase marshal 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected] to phase marshal 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor org.ap[email protected]75831760 to phase post-logical 2014-09-16 09:20:02,160 - org.apache.cxf.phase.PhaseInterceptorChain -1802 [main] DEBUG - Adding interceptor [email protected]be5 to phase write 2014-09-16 09:20:02,317 - org.apache.cxf.transport.http.HTTPConduit -1959 [main] DEBUG - Conduit '{http://webservice.tree.com/}HelloWorldPort.http-conduit' has been (re)configured for plain http. 2014-09-16 09:20:02,323 - org.apache.cxf.transport.http.HTTPConduit -1965 [main] DEBUG - No Trust Decider configured for Conduit '{http://webservice.tree.com/}HelloWorldPort.http-conduit' 2014-09-16 09:20:02,323 - org.apache.cxf.transport.http.HTTPConduit -1965 [main] DEBUG - No Auth Supplier configured for Conduit '{http://webservice.tree.com/}HelloWorldPort.http-conduit' 2014-09-16 09:20:02,323 - org.apache.cxf.transport.http.HTTPConduit -1965 [main] DEBUG - Conduit '{http://webservice.tree.com/}HelloWorldPort.http-conduit' has been configured for plain http. 2014-09-16 09:20:02,323 - org.apache.cxf.transport.http.HTTPConduit -1965 [main] DEBUG - registering incoming observer: [email protected] 2014-09-16 09:20:02,324 - org.apache.cxf.phase.PhaseInterceptorChain -1966 [main] DEBUG - Chain [email protected] was created. Current flow: setup [PolicyOutInterceptor] pre-logical [HolderOutInterceptor, SwAOutInterceptor, WrapperClassOutInterceptor, SoapHeaderOutFilterInterceptor] post-logical [SoapPreProtocolOutInterceptor] prepare-send [MessageSenderInterceptor] pre-stream [AttachmentOutInterceptor, StaxOutInterceptor] write [SoapOutInterceptor] marshal [WrappedOutInterceptor, BareOutInterceptor] 2014-09-16 09:20:02,324 - org.apache.cxf.phase.PhaseInterceptorChain -1966 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,325 - org.apache.cxf.phase.PhaseInterceptorChain -1967 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,327 - org.apache.cxf.jaxws.interceptors.HolderOutInterceptor -1969 [main] DEBUG - op: [OperationInfo: {http://webservice.tree.com/}sayHello] 2014-09-16 09:20:02,328 - org.apache.cxf.jaxws.interceptors.HolderOutInterceptor -1970 [main] DEBUG - op.hasOutput(): true 2014-09-16 09:20:02,328 - org.apache.cxf.jaxws.interceptors.HolderOutInterceptor -1970 [main] DEBUG - op.getOutput().size(): 1 2014-09-16 09:20:02,328 - org.apache.cxf.phase.PhaseInterceptorChain -1970 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,329 - org.apache.cxf.phase.PhaseInterceptorChain -1971 [main] DEBUG - Invoking handleMessage on interceptor [email protected]aacf6 2014-09-16 09:20:02,346 - org.apache.cxf.phase.PhaseInterceptorChain -1988 [main] DEBUG - Invoking handleMessage on interceptor org.apa[email protected]34741c9d 2014-09-16 09:20:02,351 - org.apache.cxf.phase.PhaseInterceptorChain -1993 [main] DEBUG - Invoking handleMessage on interceptor org.ap[email protected]75831760 2014-09-16 09:20:02,351 - org.apache.cxf.phase.PhaseInterceptorChain -1993 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,395 - org.apache.cxf.phase.PhaseInterceptorChain -2037 [main] DEBUG - Adding interceptor org.apache.cxf.inte[email protected]c63679a to phase prepare-send-ending 2014-09-16 09:20:02,411 - org.apache.cxf.phase.PhaseInterceptorChain -2053 [main] DEBUG - Chain [email protected] was modified. Current flow: setup [PolicyOutInterceptor] pre-logical [HolderOutInterceptor, SwAOutInterceptor, WrapperClassOutInterceptor, SoapHeaderOutFilterInterceptor] post-logical [SoapPreProtocolOutInterceptor] prepare-send [MessageSenderInterceptor] pre-stream [AttachmentOutInterceptor, StaxOutInterceptor] write [SoapOutInterceptor] marshal [WrappedOutInterceptor, BareOutInterceptor] prepare-send-ending [MessageSenderEndingInterceptor] 2014-09-16 09:20:02,411 - org.apache.cxf.phase.PhaseInterceptorChain -2053 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,432 - org.apache.cxf.phase.PhaseInterceptorChain -2074 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,548 - org.apache.cxf.phase.PhaseInterceptorChain -2190 [main] DEBUG - Adding interceptor [email protected] to phase pre-stream-ending 2014-09-16 09:20:02,549 - org.apache.cxf.phase.PhaseInterceptorChain -2191 [main] DEBUG - Chain [email protected] was modified. Current flow: setup [PolicyOutInterceptor] pre-logical [HolderOutInterceptor, SwAOutInterceptor, WrapperClassOutInterceptor, SoapHeaderOutFilterInterceptor] post-logical [SoapPreProtocolOutInterceptor] prepare-send [MessageSenderInterceptor] pre-stream [AttachmentOutInterceptor, StaxOutInterceptor] write [SoapOutInterceptor] marshal [WrappedOutInterceptor, BareOutInterceptor] pre-stream-ending [StaxOutEndingInterceptor] prepare-send-ending [MessageSenderEndingInterceptor] 2014-09-16 09:20:02,549 - org.apache.cxf.phase.PhaseInterceptorChain -2191 [main] DEBUG - Invoking handleMessage on interceptor [email protected]be5 2014-09-16 09:20:02,552 - org.apache.cxf.phase.PhaseInterceptorChain -2194 [main] DEBUG - Adding interceptor org.apache.cxf.bindi[email protected]27763e5f to phase write-ending 2014-09-16 09:20:02,559 - org.apache.cxf.phase.PhaseInterceptorChain -2201 [main] DEBUG - Chain [email protected] was modified. Current flow: setup [PolicyOutInterceptor] pre-logical [HolderOutInterceptor, SwAOutInterceptor, WrapperClassOutInterceptor, SoapHeaderOutFilterInterceptor] post-logical [SoapPreProtocolOutInterceptor] prepare-send [MessageSenderInterceptor] pre-stream [AttachmentOutInterceptor, StaxOutInterceptor] write [SoapOutInterceptor] marshal [WrappedOutInterceptor, BareOutInterceptor] write-ending [SoapOutEndingInterceptor] pre-stream-ending [StaxOutEndingInterceptor] prepare-send-ending [MessageSenderEndingInterceptor] 2014-09-16 09:20:02,562 - org.apache.cxf.phase.PhaseInterceptorChain -2204 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,562 - org.apache.cxf.phase.PhaseInterceptorChain -2204 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,584 - org.apache.cxf.phase.PhaseInterceptorChain -2226 [main] DEBUG - Invoking handleMessage on interceptor org.apache.cxf.bindi[email protected]27763e5f 2014-09-16 09:20:02,585 - org.apache.cxf.phase.PhaseInterceptorChain -2227 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,589 - org.apache.cxf.phase.PhaseInterceptorChain -2231 [main] DEBUG - Invoking handleMessage on interceptor org.apache.cxf.interceptor.MessageSenderInterc[email protected] 2014-09-16 09:20:02,590 - org.apache.cxf.transport.http.Headers -2232 [main] DEBUG - Accept: */* 2014-09-16 09:20:02,590 - org.apache.cxf.transport.http.Headers -2232 [main] DEBUG - SOAPAction: "" 2014-09-16 09:20:02,590 - org.apache.cxf.transport.http.HTTPConduit -2232 [main] DEBUG - No Trust Decider for Conduit '{http://webservice.tree.com/}HelloWorldPort.http-conduit'. An afirmative Trust Decision is assumed. 2014-09-16 09:20:02,650 - org.apache.cxf.transport.http.HTTPConduit -2292 [main] DEBUG - Sending POST Message with Headers to http://localhost:8080/hw Conduit :{http://webservice.tree.com/}HelloWorldPort.http-conduit 2014-09-16 09:20:02,768 - org.apache.cxf.endpoint.ClientImpl -2410 [main] DEBUG - Interceptors contributed by bus: [[email protected]] 2014-09-16 09:20:02,774 - org.apache.cxf.endpoint.ClientImpl -2416 [main] DEBUG - Interceptors contributed by client: [] 2014-09-16 09:20:02,776 - org.apache.cxf.endpoint.ClientImpl -2418 [main] DEBUG - Interceptors contributed by endpoint: [[email protected]b07, [email protected], [email protected], [email protected]] 2014-09-16 09:20:02,777 - org.apache.cxf.endpoint.ClientImpl -2419 [main] DEBUG - Interceptors contributed by binding: [[email protected], [email protected], [email protected]766eae77, [email protected]f, [email protected]c7416a, [email protected]197cbe3, [email protected]ade58, [email protected]b7647, or[email protected]7bc230bf] 2014-09-16 09:20:02,777 - org.apache.cxf.endpoint.ClientImpl -2419 [main] DEBUG - Interceptors contributed by databinging: [or[email protected]a0e8b13] 2014-09-16 09:20:02,777 - org.apache.cxf.phase.PhaseInterceptorChain -2419 [main] DEBUG - Adding interceptor [email protected] to phase receive 2014-09-16 09:20:02,778 - org.apache.cxf.phase.PhaseInterceptorChain -2420 [main] DEBUG - Adding interceptor [email protected]b07 to phase post-logical 2014-09-16 09:20:02,778 - org.apache.cxf.phase.PhaseInterceptorChain -2420 [main] DEBUG - Adding interceptor [email protected] to phase pre-invoke 2014-09-16 09:20:02,778 - org.apache.cxf.phase.PhaseInterceptorChain -2420 [main] DEBUG - Adding interceptor [email protected] to phase pre-invoke 2014-09-16 09:20:02,779 - org.apache.cxf.phase.PhaseInterceptorChain -2421 [main] DEBUG - Adding interceptor [email protected] to phase read 2014-09-16 09:20:02,779 - org.apache.cxf.phase.PhaseInterceptorChain -2421 [main] DEBUG - Adding interceptor [email protected] to phase receive 2014-09-16 09:20:02,779 - org.apache.cxf.phase.PhaseInterceptorChain -2421 [main] DEBUG - Adding interceptor [email protected] to phase post-stream 2014-09-16 09:20:02,779 - org.apache.cxf.phase.PhaseInterceptorChain -2421 [main] DEBUG - Adding interceptor [email protected]766eae77 to phase read 2014-09-16 09:20:02,779 - org.apache.cxf.phase.PhaseInterceptorChain -2421 [main] DEBUG - Adding interceptor [email protected]f to phase unmarshal 2014-09-16 09:20:02,780 - org.apache.cxf.phase.PhaseInterceptorChain -2422 [main] DEBUG - Adding interceptor [email protected]c7416a to phase unmarshal 2014-09-16 09:20:02,782 - org.apache.cxf.phase.PhaseInterceptorChain -2424 [main] DEBUG - Adding interceptor [email protected]197cbe3 to phase read 2014-09-16 09:20:02,782 - org.apache.cxf.phase.PhaseInterceptorChain -2424 [main] DEBUG - Adding interceptor [email protected]ade58 to phase read 2014-09-16 09:20:02,782 - org.apache.cxf.phase.PhaseInterceptorChain -2424 [main] DEBUG - Adding interceptor [email protected]b7647 to phase post-protocol 2014-09-16 09:20:02,782 - org.apache.cxf.phase.PhaseInterceptorChain -2424 [main] DEBUG - Adding interceptor or[email protected]7bc230bf to phase pre-protocol 2014-09-16 09:20:02,783 - org.apache.cxf.phase.PhaseInterceptorChain -2425 [main] DEBUG - Adding interceptor or[email protected]a0e8b13 to phase post-protocol 2014-09-16 09:20:02,783 - org.apache.cxf.phase.PhaseInterceptorChain -2425 [main] DEBUG - Chain [email protected] was created. Current flow: receive [PolicyInInterceptor, AttachmentInInterceptor] post-stream [StaxInInterceptor] read [WSDLGetInterceptor, ReadHeadersInterceptor, SoapActionInInterceptor, StartBodyInterceptor] pre-protocol [MustUnderstandInterceptor] post-protocol [CheckFaultInterceptor, JAXBAttachmentSchemaValidationHack] unmarshal [DocLiteralInInterceptor, SoapHeaderInterceptor] post-logical [WrapperClassInInterceptor] pre-invoke [SwAInInterceptor, HolderInInterceptor] 2014-09-16 09:20:02,783 - org.apache.cxf.phase.PhaseInterceptorChain -2425 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,807 - org.apache.cxf.phase.PhaseInterceptorChain -2449 [main] DEBUG - Adding interceptor [email protected] to phase pre-invoke 2014-09-16 09:20:02,808 - org.apache.cxf.phase.PhaseInterceptorChain -2450 [main] DEBUG - Chain [email protected] was modified. Current flow: receive [PolicyInInterceptor, AttachmentInInterceptor] post-stream [StaxInInterceptor] read [WSDLGetInterceptor, ReadHeadersInterceptor, SoapActionInInterceptor, StartBodyInterceptor] pre-protocol [MustUnderstandInterceptor] post-protocol [CheckFaultInterceptor, JAXBAttachmentSchemaValidationHack] unmarshal [DocLiteralInInterceptor, SoapHeaderInterceptor] post-logical [WrapperClassInInterceptor] pre-invoke [SwAInInterceptor, HolderInInterceptor, PolicyVerificationInInterceptor] 2014-09-16 09:20:02,808 - org.apache.cxf.phase.PhaseInterceptorChain -2450 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,808 - org.apache.cxf.phase.PhaseInterceptorChain -2450 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,867 - org.apache.cxf.phase.PhaseInterceptorChain -2509 [main] DEBUG - Adding interceptor [email protected] to phase pre-invoke 2014-09-16 09:20:02,877 - org.apache.cxf.phase.PhaseInterceptorChain -2519 [main] DEBUG - Chain [email protected] was modified. Current flow: receive [PolicyInInterceptor, AttachmentInInterceptor] post-stream [StaxInInterceptor] read [WSDLGetInterceptor, ReadHeadersInterceptor, SoapActionInInterceptor, StartBodyInterceptor] pre-protocol [MustUnderstandInterceptor] post-protocol [CheckFaultInterceptor, JAXBAttachmentSchemaValidationHack] unmarshal [DocLiteralInInterceptor, SoapHeaderInterceptor] post-logical [WrapperClassInInterceptor] pre-invoke [StaxInEndingInterceptor, SwAInInterceptor, HolderInInterceptor, PolicyVerificationInInterceptor] 2014-09-16 09:20:02,878 - org.apache.cxf.phase.PhaseInterceptorChain -2520 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,879 - org.apache.cxf.phase.PhaseInterceptorChain -2521 [main] DEBUG - Invoking handleMessage on interceptor [email protected]197cbe3 2014-09-16 09:20:02,888 - org.apache.cxf.phase.PhaseInterceptorChain -2530 [main] DEBUG - Invoking handleMessage on interceptor [email protected]766eae77 2014-09-16 09:20:02,892 - org.apache.cxf.phase.PhaseInterceptorChain -2534 [main] DEBUG - Invoking handleMessage on interceptor [email protected]ade58 2014-09-16 09:20:02,892 - org.apache.cxf.phase.PhaseInterceptorChain -2534 [main] DEBUG - Invoking handleMessage on interceptor or[email protected]7bc230bf 2014-09-16 09:20:02,893 - org.apache.cxf.phase.PhaseInterceptorChain -2535 [main] DEBUG - Invoking handleMessage on interceptor [email protected]b7647 2014-09-16 09:20:02,893 - org.apache.cxf.phase.PhaseInterceptorChain -2535 [main] DEBUG - Invoking handleMessage on interceptor or[email protected]a0e8b13 2014-09-16 09:20:02,894 - org.apache.cxf.phase.PhaseInterceptorChain -2536 [main] DEBUG - Invoking handleMessage on interceptor [email protected]f 2014-09-16 09:20:02,943 - org.apache.cxf.phase.PhaseInterceptorChain -2585 [main] DEBUG - Invoking handleMessage on interceptor [email protected]c7416a 2014-09-16 09:20:02,945 - org.apache.cxf.phase.PhaseInterceptorChain -2587 [main] DEBUG - Invoking handleMessage on interceptor [email protected]b07 2014-09-16 09:20:02,960 - org.apache.cxf.phase.PhaseInterceptorChain -2602 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,960 - org.apache.cxf.phase.PhaseInterceptorChain -2602 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,960 - org.apache.cxf.phase.PhaseInterceptorChain -2602 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,960 - org.apache.cxf.phase.PhaseInterceptorChain -2602 [main] DEBUG - Invoking handleMessage on interceptor [email protected] 2014-09-16 09:20:02,960 - org.apache.cxf.ws.policy.PolicyVerificationInInterceptor -2602 [main] DEBUG - Verified policies for inbound message. Hello chiweitree
但是其实在实际项目中,并不希望webservice和应用是分开的,希望它们在同一个容器中,比如tomcat,这样我们就通过WEB来部署webservice服务了
首先来配置web.xml,定义CXFServlet等等
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFService</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/spring-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
在来定义spring-ws.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <bean id="helloWorldImpl" class="com.tree.webservice.impl.HelloWorldImpl"/> <jaxws:endpoint id="heloWorld" implementor="#helloWorldImpl" address="/hw"> <jaxws:properties> <entry key="schema-validate-enabled" value="true"/> </jaxws:properties> </jaxws:endpoint> </beans>
启动tomcat服务器
这时候注意访问地址
ip:port/项目名/url-pattern in web.xml/address?wsdl
http://localhost:8080/demo.web/ws/hw?wsdl
This XML file does not appear to have any style information associated with it. The document tree is shown below. <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.webservice.tree.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://webservice.tree.com/" name="HelloWorldImplService" targetNamespace="http://impl.webservice.tree.com/"> <wsdl:import location="http://localhost:8080/demo.web/ws/hw?wsdl=HelloWorld.wsdl" namespace="http://webservice.tree.com/"></wsdl:import> <wsdl:binding name="HelloWorldImplServiceSoapBinding" type="ns1:HelloWorld"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="sayHello"> <soap:operation soapAction="" style="document"/> <wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorldImplService"> <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort"> <soap:address location="http://localhost:8080/demo.web/ws/hw"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
发布成功
同样用前面的调用实例调用一次试试即可。
时间: 2024-10-11 09:48:25