
рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
рдХрдИ рд▓реЗрдЦ рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВ рдЬреЛ
SOAP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рд╖рдп рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ рдХрд┐ Apache CXF рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЪреАрдВрдЯреА рдФрд░ рдорд╛рд╡реЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдПрдХ
рдбрдмреНрд▓реНрдпреВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛ рджреА рдЧрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП ...
(
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдПрдХ рд▓реЗрдЦ рд╕реЗ рдЫрд╡рд┐ред)
0. рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВ
рдЬреЛ рдХрд╛рд░реНрдп рд╣рдо рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдпрд╣ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ
рдПрд╕рдУрдПрдкреА 1.1 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкреВрд░рд╛
рдХрд░рддрд╛ рд╣реИ , рдЬреЛ рдПрдХ рддреИрдпрд╛рд░ рдбрдмреНрд▓реНрдпреВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред "рд▓рд┐рдлрд╛рдлреЗ" рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо HTTP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЛ рджреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
- рдкрд░рд┐рдгрд╛рдореА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдпрд╣ рдореВрд▓ WSDL рдпреЛрдЬрдирд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="CurrentTimeService" targetNamespace="http://artspb.me/cts" xmlns:tns="http://artspb.me/cts" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xsd:schema targetNamespace="http://artspb.me/cts"> <xsd:element name="timeZoneId" nillable="true" type="xsd:string"/> <xsd:element name="currentTime" type="xsd:dateTime"/> </xsd:schema> </wsdl:types> <wsdl:message name="getCurrentTimeMsg"> <wsdl:part element="tns:timeZoneId" name="timeZoneId"/> </wsdl:message> <wsdl:message name="currentTimeMsg"> <wsdl:part element="tns:currentTime" name="currentTime"/> </wsdl:message> <wsdl:portType name="CurrentTimeService"> <wsdl:operation name="getCurrentTime"> <wsdl:input message="tns:getCurrentTimeMsg" name="getCurrentTime"/> <wsdl:output message="tns:currentTimeMsg" name="currentTime"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="CurrentTimeService_HttpBinding" type="tns:CurrentTimeService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getCurrentTime"> <soap:operation soapAction="http://artspb.me/cts" style="document"/> <wsdl:input name="getCurrentTime"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="currentTime"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="CurrentTimeService_HttpService"> <wsdl:port binding="tns:CurrentTimeService_HttpBinding" name="CurrentTimeService_HttpPort"> <soap:address location="http://localhost:8080/YetAnotherService/service/currentTimeService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
рд╕реЗрд╡рд╛ рдХреА рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ: рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдмреЗрд▓реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реЗрд╡рд╛ рд╡рд░реНрддрдорд╛рди рд╕рд░реНрд╡рд░ рд╕рдордп рд▓реМрдЯрд╛рддреА рд╣реИред
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рд╕рднреА рдПрдХ рд╕рд╛рде
IntelliJ IDEA рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдХрд░рдг рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо рдЪреАрдВрдЯреА рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗред ObjectLibrary рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣рдо рд╕реНрд░реЛрдд рд╕рд░реНрдХрд┐рдЯ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд░рдЦреЗрдВрдЧреЗред CurrentTimeService рдореЙрдбреНрдпреВрд▓ рдореБрдЦреНрдп рд╣реЛрдЧрд╛, рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░рдЦреЗрдВрдЧреЗ, рдФрд░ рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдпреБрджреНрдз рдлрд╝рд╛рдЗрд▓ рднреА рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред
рдкреЛрдо-рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреА: рд╕реНрдкреНрд░рд┐рдВрдЧ-рд╡реЗрдм, рд▓реЙрдЧ 4 рдЬреЗ, cxf-rt-frontend-jaxws рдФрд░ cxf-rt-transports-http - рдпреЗ рд╕рднреА http://repo1.maven.org.maven2 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
1. рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓-рд╕реНрдХреАрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рд╡рд╛-рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓-рд╕реНрдХреАрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЬрд╛рд╡рд╛-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрд╛рдЪреЗ
рд╕реАрдПрдХреНрд╕рдПрдл рдкреИрдХреЗрдЬ рд╕реЗ
wsdl2java рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдореВрд▓ рдПрдВрдЯреА-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЙрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдкреНрд░реА-рдХреНрд▓рд┐рдпрд░ рдХрд░реЗ рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕реЗрд╕ рдЬреЛрдбрд╝реА рдЬрд╛рдПрдВрдЧреАред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореВрд▓ рд╕рд░реНрдХрд┐рдЯ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрди рд╡рд░реНрдЧреЛрдВ рд╕реЗ "рдХрдЪрд░рд╛" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдм рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЬрдЯрд┐рд▓ рдорд┐рд╢реНрд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░реНрдХрд┐рдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред
<?xml version="1.0"?> <project name="BuildObject"> <property name="cxf.home" value="/home/art/tools/apache-cxf-2.5.2"/> <path id="cxf.classpath"> <fileset dir="${cxf.home}/lib"> <include name="*.jar"/> </fileset> </path> <target name="cxfWSDLToJava"> <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-verbose"/> <arg value="-d"/> <arg value="../ObjectLibrary/src/main/java"/> <arg value="../ObjectLibrary/src/main/resources/CurrentTimeService.wsdl"/> <classpath> <path refid="cxf.classpath"/> </classpath> </java> </target> <target name="regenerate.object.library"> <delete dir="../ObjectLibrary/src/main/java"/> <antcall target="cxfWSDLToJava"/> </target> </project>
рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рд▓реНрдб / рдмрд┐рд▓реНрдб.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦреЗрдВред рдЯрд╛рд╕реНрдХ
regenerate.object.library рдХреЛ рд░рди рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк ObjectLibrary рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдореЗрдВ рд╡рд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
package me.artspb.cts; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.xml.bind.annotation.XmlSeeAlso; @WebService(targetNamespace = "http://artspb.me/cts", name = "CurrentTimeService") @XmlSeeAlso({ObjectFactory.class}) @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) public interface CurrentTimeService { @WebResult(name = "currentTime", targetNamespace = "http://artspb.me/cts", partName = "currentTime") @WebMethod(action = "http://artspb.me/cts") public javax.xml.datatype.XMLGregorianCalendar getCurrentTime( @WebParam(partName = "timeZoneId", name = "timeZoneId", targetNamespace = "http://artspb.me/cts") java.lang.String timeZoneId ); }
рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ wsdl2java рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдорджрдж рд╕реЗ рд╣рдо рддреБрд░рдВрдд рддреИрдпрд╛рд░ рд╕рд░реНрд╡рд░ (-рд╕реЗрд╡рд░ рд╕реНрд╡рд┐рдЪ) рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (-impl рд╕реНрд╡рд┐рдЪ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХреЛрдб рд╕реЗ рддрдВрдЧ рдмрдВрдзрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
2. рдкрд░рд┐рдгрд╛рдореА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рд╣рдо рдЙрд╕реА рдирд╛рдо рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ CurrentTimeService рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬрдЧрд╣ рджреЗрдВрдЧреЗред рдХреЛрдб рд╕реАрдзрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
package me.artspb.cts; import org.apache.log4j.Logger; import javax.jws.WebParam; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; import java.util.GregorianCalendar; import java.util.TimeZone; public class CurrentTimeServiceImpl implements CurrentTimeService { private Logger logger = Logger.getLogger(CurrentTimeServiceImpl.class); public XMLGregorianCalendar getCurrentTime( @WebParam(partName = "timeZoneId", name = "timeZoneId", targetNamespace = "http://artspb.me/cts") String timeZoneId) { logger.debug("Operation getCurrentTime was requested."); XMLGregorianCalendar gregorianCalendar; try { gregorianCalendar = getXmlGregorianCalendar(timeZoneId); } catch (DatatypeConfigurationException e) { throw new RuntimeException(e); } logger.debug("Successful."); return gregorianCalendar; } private XMLGregorianCalendar getXmlGregorianCalendar(String id) throws DatatypeConfigurationException { TimeZone timeZone; if (!"".equals(id)) { logger.debug("TimeZoneId isn't null: " + id); timeZone = TimeZone.getTimeZone(id); } else { logger.debug("TimeZoneId is null. Will use default value."); timeZone = TimeZone.getDefault(); } GregorianCalendar gregorianCalendar = new GregorianCalendar(timeZone); return DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar); } }
рдЕрдм,
рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ serviceContext.xml рдФрд░ web.xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ log4j.xml рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдЖрдк рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕реЗрд╡рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЖрд╡реЗрджрди рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреА рд╕рдВрдЪрд╛рд▓рди рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
3. рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рдирд┐рд░реАрдХреНрд╖рдг
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рд╡реЗрди "рдкреИрдХреЗрдЬ" рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗред Tomcat рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдпреБрджреНрдз рдлрд╝рд╛рдЗрд▓ рддреИрдирд╛рдд рдХрд░реЗрдВред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреЛрд░реНрдЯ 8080 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд╛рдмреБрдирдпреВрдЖрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕реЗрд╡рд╛ рдХреА рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ рдпреЛрдЬрдирд╛
http: // localhost: 8080 / CurrentTimeService / Service /TimeTimeService? Wsdl рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ , рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдПрдХ рдирдИ рд╕рд╛рдмреБрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cts="http://artspb.me/cts"> <soapenv:Header/> <soapenv:Body> <cts:timeZoneId>PST</cts:timeZoneId> </soapenv:Body> </soapenv:Envelope>
рд╣рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓рддрд╛ рд╣реИ:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <currentTime xmlns="http://artspb.me/cts">2012-02-02T08:48:24.402-08:00</currentTime> </soap:Body> </soap:Envelope>
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╡реЗрдм рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИред рд╣рдо рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП "рддрдВрдЧ" рдмрдВрдзрди рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рднреА рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдЬреЛ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЖрдЧреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдореЗрдВ рдХрдо рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реМрднрд╛рдЧреНрдп!
рдПрдХ рд╕рд╛рде рдореБрдЦреНрдп рд▓рд┐рдВрдХ: