{"id":54738,"date":"2018-01-29T15:00:30","date_gmt":"2018-01-29T13:00:30","guid":{"rendered":"http:\/\/examples.javacodegeeks.com\/?p=54738"},"modified":"2018-01-26T17:47:32","modified_gmt":"2018-01-26T15:47:32","slug":"jax-ws-jaxb-example","status":"publish","type":"post","link":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/","title":{"rendered":"JAX-WS JAXB Example"},"content":{"rendered":"<h2>1. Introduction<\/h2>\n<p><a href=\"https:\/\/javaee.github.io\/tutorial\/jaxws001.html\" target=\"_blank\" rel=\"noopener\">Java Architecture for XML Web Services<\/a> (JAX-WS) is a Java programming language for creating web services, particularly SOAP services.<\/p>\n<p><a href=\"http:\/\/www.oracle.com\/technetwork\/articles\/javase\/index-140168.html\" target=\"_blank\" rel=\"noopener\">Java Architecture for XML Binding<\/a> (JAXB) is a Java-XML binding technology that simplifies the development of web services by enabling transformations between a schema and Java objects, and also between XML instance documents and Java object instances.<\/p>\n<p>Both JAX-WS and JAXB have been a part of JDK since version 6. JAX-WS uses JAXB internally\u00a0as the binding layer to convert Java objects to and from XML.<\/p>\n<p>In this example, I will build a JAX-WS service with three steps:<\/p>\n<ol>\n<li>Generate Java stubs from the WSDL file<\/li>\n<li>Create an implementation class for the generated interface and annotate it with <code>@WebService(endpointInterface=\"\")<\/code><\/li>\n<li>Create an <code>Endpoint<\/code> to publish the service<\/li>\n<\/ol>\n<h2>2. Business Use Case<\/h2>\n<p><code>BestPay<\/code> is a fictional company which provides employee paycheck services. <code>BestPay<\/code>\u00a0defines\u00a0WSDL.\u00a0<code>BestPay<\/code>&#8216;s customer implements the service.\u00a0<code>BestPay<\/code>\u00a0reads the client&#8217;s employee records via the service.<\/p>\n<p><code>BestPay<\/code>\u00a0WSDL which defines the <code>employeeLookupService<\/code> and employee detail from <code>employee.xsd<\/code>.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>employeeService.wsdl<\/em><\/span><\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;wsdl:definitions name=\"Employee\"\r\n\ttargetNamespace=\"http:\/\/bestpay.payroll\/employee\" xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/wsdl\/soap\/\"\r\n\txmlns:tns=\"http:\/\/bestpay.payroll\/employee\" xmlns:wsdl=\"http:\/\/schemas.xmlsoap.org\/wsdl\/\"\r\n\txmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n\r\n\t&lt;wsdl:types&gt;\r\n\t\t&lt;xsd:schema&gt;\r\n\t\t\t&lt;xsd:import namespace=\"http:\/\/bestpay.payroll\/employee\"\r\n\t\t\t\tschemaLocation=\"..\/xsd\/employee.xsd\" \/&gt;\r\n\t\t&lt;\/xsd:schema&gt;\r\n\t&lt;\/wsdl:types&gt;\r\n\r\n\t&lt;wsdl:message name=\"employeeLookupRequest\"&gt;\r\n\t\t&lt;wsdl:part element=\"tns:EmployeeIdList\" name=\"employeeIdList\" \/&gt;\r\n\t&lt;\/wsdl:message&gt;\r\n\r\n\t&lt;wsdl:message name=\"employeeLookupResponse\"&gt;\r\n\t\t&lt;wsdl:part element=\"tns:EmployeeInfoList\" name=\"employeeInfoList\" \/&gt;\r\n\t&lt;\/wsdl:message&gt;\r\n\r\n\t&lt;wsdl:portType name=\"employeeLookupService\"&gt;\r\n\t\t&lt;wsdl:operation name=\"employeeLookup\"&gt;\r\n\t\t\t&lt;wsdl:input message=\"tns:employeeLookupRequest\" \/&gt;\r\n\t\t\t&lt;wsdl:output message=\"tns:employeeLookupResponse\" \/&gt;\r\n\t\t&lt;\/wsdl:operation&gt;\r\n\t&lt;\/wsdl:portType&gt;\r\n\r\n\t&lt;wsdl:binding name=\"employeeLookupBinding\" type=\"tns:employeeLookupService\"&gt;\r\n\t\t&lt;soap:binding style=\"document\"\r\n\t\t\ttransport=\"http:\/\/schemas.xmlsoap.org\/soap\/http\" \/&gt;\r\n\t\t&lt;wsdl:operation name=\"employeeLookup\"&gt;\r\n\t\t\t&lt;soap:operation soapAction=\"http:\/\/bestpay.payroll\/employee\/employeeLookup\" \/&gt;\r\n\t\t\t&lt;wsdl:input&gt;\r\n\t\t\t\t&lt;soap:body use=\"literal\" \/&gt;\r\n\t\t\t&lt;\/wsdl:input&gt;\r\n\t\t\t&lt;wsdl:output&gt;\r\n\t\t\t\t&lt;soap:body use=\"literal\" \/&gt;\r\n\t\t\t&lt;\/wsdl:output&gt;\r\n\t\t&lt;\/wsdl:operation&gt;\r\n\t&lt;\/wsdl:binding&gt;\r\n\r\n\t&lt;wsdl:service name=\"employeeLookupService\"&gt;\r\n\t\t&lt;wsdl:port binding=\"tns:employeeLookupBinding\" name=\"employeeLookupPort\"&gt;\r\n\t\t\t&lt;soap:address location=\"http:\/\/localhost\" \/&gt;\r\n\t\t&lt;\/wsdl:port&gt;\r\n\t&lt;\/wsdl:service&gt;\r\n\r\n&lt;\/wsdl:definitions&gt;<\/pre>\n<p>Employee schema file which defines\u00a0<code>EmployeeInfo<\/code> data structure.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>employee.xsd<\/em><\/span><\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;xs:schema xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\"\r\n\ttargetNamespace=\"http:\/\/bestpay.payroll\/employee\" xmlns:tns=\"http:\/\/bestpay.payroll\/employee\"\r\n\telementFormDefault=\"qualified\"&gt;\r\n\r\n\t&lt;xs:simpleType name=\"EmployeeId\"&gt;\r\n\t\t&lt;xs:restriction base=\"xs:string\"&gt;\r\n\t\t\t&lt;xs:length value=\"7\" \/&gt;\r\n\t\t\t&lt;xs:pattern value=\"E[0-9]{7}\" \/&gt;\r\n\t\t&lt;\/xs:restriction&gt;\r\n\t&lt;\/xs:simpleType&gt;\r\n\r\n\t&lt;xs:simpleType name=\"EmployeeType\"&gt;\r\n\t\t&lt;xs:restriction base=\"xs:string\"&gt;\r\n\t\t\t&lt;xs:enumeration value=\"Hourly\" \/&gt;\r\n\t\t\t&lt;xs:enumeration value=\"Salary\" \/&gt;\r\n\t\t&lt;\/xs:restriction&gt;\r\n\t&lt;\/xs:simpleType&gt;\r\n\r\n\t&lt;xs:complexType name=\"EmployeeInfo\"&gt;\r\n\t\t&lt;xs:sequence&gt;\r\n\t\t\t&lt;xs:element name=\"eid\" type=\"tns:EmployeeId\" minOccurs=\"0\"\r\n\t\t\t\tnillable=\"false\" \/&gt;\r\n\t\t\t&lt;xs:element name=\"firstName\" type=\"xs:string\" minOccurs=\"0\"\r\n\t\t\t\tnillable=\"false\" \/&gt;\r\n\t\t\t&lt;xs:element name=\"lastName\" type=\"xs:string\" minOccurs=\"0\"\r\n\t\t\t\tnillable=\"false\" \/&gt;\r\n\t\t\t&lt;xs:element name=\"hourlyRate\" type=\"xs:decimal\" minOccurs=\"0\"\r\n\t\t\t\tnillable=\"false\" \/&gt;\r\n\t\t\t&lt;xs:element name=\"type\" type=\"tns:EmployeeType\"\r\n\t\t\t\tminOccurs=\"0\" nillable=\"false\" \/&gt;\r\n\t\t&lt;\/xs:sequence&gt;\r\n\t&lt;\/xs:complexType&gt;\r\n\r\n\t&lt;xs:complexType name=\"EmployeeInfoWrapper\"&gt;\r\n\t\t&lt;xs:sequence&gt;\r\n\t\t\t&lt;xs:element name=\"employeeInfo\" type=\"tns:EmployeeInfo\"\r\n\t\t\t\tminOccurs=\"0\" maxOccurs=\"unbounded\" nillable=\"false\" \/&gt;\r\n\t\t&lt;\/xs:sequence&gt;\r\n\t&lt;\/xs:complexType&gt;\r\n\r\n\t&lt;xs:complexType name=\"EmployeeIdWrapper\"&gt;\r\n\t\t&lt;xs:sequence&gt;\r\n\t\t\t&lt;xs:element name=\"eid\" type=\"tns:EmployeeId\" minOccurs=\"0\"\r\n\t\t\t\tmaxOccurs=\"unbounded\" nillable=\"false\" \/&gt;\r\n\t\t&lt;\/xs:sequence&gt;\r\n\t&lt;\/xs:complexType&gt;\r\n\r\n\t&lt;xs:element name=\"EmployeeIdList\" type=\"tns:EmployeeIdWrapper\" \/&gt;\r\n\t&lt;xs:element name=\"EmployeeInfoList\" type=\"tns:EmployeeInfoWrapper\" \/&gt;\r\n\r\n&lt;\/xs:schema&gt;<\/pre>\n<p>Each customer of <code>BestPay<\/code>\u00a0implements the <code>employeeLookupService<\/code>\u00a0as defined in the WSDL. There is no additional development work at <code>BestPay<\/code> except configuring the customer&#8217;s service endpoint.<\/p>\n<h2>3. Technologies used<\/h2>\n<p>The example code in this article was built and run using:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<ul>\n<li>Java 1.8.101 (1.8.x will do fine)<\/li>\n<li>Maven 3.3.9 (3.3.x will do fine)<\/li>\n<li>Eclipse Mars (Any Java IDE would work)<\/li>\n<\/ul>\n<h2>4. Generate Java Stub<\/h2>\n<h3>4.1. Set up Pom.xml<\/h3>\n<p>Create a Maven project and configure it with the\u00a0<code>wsimport<\/code> plug-in to automatically generate source codes from the <code>employeeLookupService.wsdl<\/code>.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>pom.xml<\/em><\/span><\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n\t&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n\t&lt;groupId&gt;Jax-ws-server&lt;\/groupId&gt;\r\n\t&lt;artifactId&gt;jax-ws-server-wsdl&lt;\/artifactId&gt;\r\n\t&lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\r\n\t&lt;build&gt;\r\n\t\t&lt;plugins&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;artifactId&gt;maven-compiler-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;3.5.1&lt;\/version&gt;\r\n\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t&lt;source&gt;1.8&lt;\/source&gt;\r\n\t\t\t\t\t&lt;target&gt;1.8&lt;\/target&gt;\r\n\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;artifactId&gt;maven-war-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;2.6&lt;\/version&gt;\r\n\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t&lt;warSourceDirectory&gt;WebContent&lt;\/warSourceDirectory&gt;\r\n\t\t\t\t\t&lt;failOnMissingWebXml&gt;false&lt;\/failOnMissingWebXml&gt;\r\n\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;groupId&gt;org.codehaus.mojo&lt;\/groupId&gt;\r\n\t\t\t\t&lt;artifactId&gt;jaxws-maven-plugin&lt;\/artifactId&gt;\r\n\t\t\t\t&lt;version&gt;2.5&lt;\/version&gt;\r\n\t\t\t\t&lt;executions&gt;\t\t\t\t\t\r\n\t\t\t\t\t&lt;execution&gt;\r\n\t\t\t\t\t\t&lt;id&gt;employee_wsdl&lt;\/id&gt;\r\n\t\t\t\t\t\t&lt;configuration&gt;\r\n\t\t\t\t\t\t\t&lt;wsdlDirectory&gt;${basedir}\/src\/main\/resources\/wsdl&lt;\/wsdlDirectory&gt;\r\n\t\t\t\t\t\t\t&lt;wsdlUrls&gt;\r\n\t\t\t\t\t\t\t\t&lt;wsdlUrl&gt;${basedir}\/src\/main\/resources\/wsdl\/employeeService.wsdl&lt;\/wsdlUrl&gt;\r\n\t\t\t\t\t\t\t&lt;\/wsdlUrls&gt;\r\n\t\t\t\t\t\t\t&lt;packageName&gt;jcg.demo.service.employee&lt;\/packageName&gt;\r\n\t\t\t\t\t\t\t&lt;keep&gt;true&lt;\/keep&gt;\r\n\t\t\t\t\t\t\t&lt;sourceDestDir&gt;${basedir}\/target\/generated\/src\/main\/java&lt;\/sourceDestDir&gt;\r\n\t\t\t\t\t\t&lt;\/configuration&gt;\r\n\t\t\t\t\t\t&lt;goals&gt;\r\n\t\t\t\t\t\t\t&lt;goal&gt;wsimport&lt;\/goal&gt;\r\n\t\t\t\t\t\t&lt;\/goals&gt;\r\n\t\t\t\t\t&lt;\/execution&gt;\r\n\t\t\t\t&lt;\/executions&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t&lt;\/plugins&gt;\r\n\t&lt;\/build&gt;\r\n&lt;\/project&gt;<\/pre>\n<h3>4.2. Generate the Stubs<\/h3>\n<p>Execute <code>mvn install<\/code> to generate the Java stubs.<\/p>\n<p><span style=\"text-decoration: underline;\"><em><code><\/code>Output<\/em><\/span><\/p>\n<pre class=\"brush:bash; wrap-lines:false\">[INFO] jaxws:wsimport args: [-keep, -s, 'C:\\MZheng_Java_workspace\\Java Code Geek Examples\\JAX-WS-Demo\\jax-ws-server-wsdl\\target\\generated\\src\\main\\java', -d, 'C:\\MZheng_Java_workspace\\Java Code Geek Examples\\JAX-WS-Demo\\jax-ws-server-wsdl\\target\\classes', -Xnocompile, -p, jcg.demo.service.employee, \"file:\/C:\/MZheng_Java_workspace\/Java%20Code%20Geek%20Examples\/JAX-WS-Demo\/jax-ws-server-wsdl\/src\/main\/resources\/wsdl\/employeeService.wsdl\"]\r\n<\/pre>\n<h3>4.2 Generated Codes<\/h3>\n<p>Check the generated codes which includes several\u00a0<a href=\"https:\/\/docs.oracle.com\/javaee\/6\/api\/javax\/xml\/bind\/annotation\/package-summary.html\" target=\"_blank\" rel=\"noopener\">JAXB Annotations<\/a>:<\/p>\n<ul>\n<li><code>@XmlRootElement<\/code><\/li>\n<li><code>@XmlElement<\/code><\/li>\n<li><code>@XmlSeeAlso<\/code><\/li>\n<li><code>@XmlType<\/code><\/li>\n<li><code>@XmlAccessorType<\/code><\/li>\n<li><code>@XmlSchemaType<\/code><\/li>\n<li><code>@XmlEnumValue<\/code><\/li>\n<li><code>@XmlEnum<\/code><\/li>\n<li><code>@XmlRegistry<\/code><\/li>\n<\/ul>\n<p><strong>Note<\/strong>: Never modify the generated codes.<\/p>\n<h2>5. Implement the Generated Interface<\/h2>\n<p>Implements the generated interface <code>EmployeeLookupService<\/code> by retrieving its employees records.<\/p>\n<h3>5.1.\u00a0Create the Implementation Class<\/h3>\n<p>Create\u00a0<code>EmployeeLookupServiceImpl<\/code> to implement the generated interface:<code>EmployeeLookupService<\/code>. It uses\u00a0<code>InternalEmployeeComponent<\/code> to get employee detail.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>EmployeeLookupServiceImpl.java<\/em><\/span><\/p>\n<pre class=\"brush:java; wrap-lines:false; highlight:[12]\">package jcg.demo.service.impl;\r\n\r\nimport java.util.List;\r\n\r\nimport javax.jws.WebService;\r\n\r\nimport jcg.demo.model.InternalEmployee;\r\nimport jcg.demo.service.employee.EmployeeIdWrapper;\r\nimport jcg.demo.service.employee.EmployeeInfoWrapper;\r\nimport jcg.demo.service.employee.EmployeeLookupService;\r\n\r\n@WebService(endpointInterface = \"jcg.demo.service.employee.EmployeeLookupService\")\r\npublic class EmployeeLookupServiceImpl implements EmployeeLookupService {\r\n\r\n\tprivate InternalEmployeeComponent empService = new InternalEmployeeComponent();\r\n\r\n\t@Override\r\n\tpublic EmployeeInfoWrapper employeeLookup(EmployeeIdWrapper employeeIdList) {\r\n\r\n\t\tEmployeeInfoWrapper eWrapper = new EmployeeInfoWrapper();\r\n\r\n\t\tList allEmps = empService.getEmployees(employeeIdList.getEid());\r\n\r\n\t\teWrapper.getEmployeeInfo().addAll(allEmps);\r\n\r\n\t\treturn eWrapper;\r\n\t}\r\n\r\n}\r\n<\/pre>\n<ul>\n<li>Line 12: Indicate it as JAX-WS Web Service<\/li>\n<\/ul>\n<h3>5.2.\u00a0Create Internal Employee Service<\/h3>\n<p>Create\u00a0<code>InternalEmployeeComponent<\/code> to retrieve the employee records and print it out as an xml <code>String<\/code>.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>InternalEmployeeComponent.java<\/em><\/span><\/p>\n<pre class=\"brush:java; wrap-lines:false; highlight:[18,19,21,22,47]\">package jcg.demo.service.impl;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Random;\r\n\r\nimport javax.xml.bind.JAXBContext;\r\nimport javax.xml.bind.JAXBException;\r\nimport javax.xml.bind.Marshaller;\r\n\r\nimport jcg.demo.model.InternalEmployee;\r\nimport jcg.demo.service.employee.EmployeeType;\r\n\r\npublic class InternalEmployeeComponent {\r\n\r\n\tpublic void printOutAsXml(InternalEmployee interEmp) throws JAXBException {\r\n\t\tJAXBContext jaxbContext = JAXBContext.newInstance(InternalEmployee.class);\r\n\t\tMarshaller jaxbMarshaller = jaxbContext.createMarshaller();\r\n\r\n\t\tjaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);\r\n\t\tjaxbMarshaller.marshal(interEmp, System.out);\r\n\t}\r\n\r\n\tpublic List getEmployees(List ids) {\r\n\t\tList emps = new ArrayList();\r\n\t\tfor (String id : ids) {\r\n\t\t\temps.add(buildDummyEmployee(id, \"Internal data \" + id, EmployeeType.HOURLY));\r\n\t\t}\r\n\r\n\t\treturn emps;\r\n\t}\r\n\r\n\tprivate InternalEmployee buildDummyEmployee(String id, String internal, EmployeeType type) {\r\n\t\tInternalEmployee emp = new InternalEmployee();\r\n\t\temp.setEid(id);\r\n\t\temp.setInternal(internal);\r\n\t\tRandom rand = new Random();\r\n\r\n\t\temp.setFirstName(\"FName_\" + id);\r\n\t\temp.setLastName(\"LName_\" + id);\r\n\t\temp.setType(type);\r\n\r\n\t\temp.setHourlyRate(new BigDecimal(rand.nextInt(40)));\r\n\t\t\r\n\t\ttry {\r\n\t\t\tprintOutAsXml(emp);\r\n\t\t} catch (JAXBException e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t\treturn emp;\r\n\t}\r\n}\r\n<\/pre>\n<ul>\n<li>Line 18: Create <code>JAXBContext<\/code> instance for <code>InternalEmployee<\/code><\/li>\n<li>Line 19: Create <code>Marshaller <\/code> instance<\/li>\n<li>Line 21: Use <code>setProperty<\/code> to set XML as formatted<\/li>\n<li>Line 22: Invoke <code>marshal<\/code> to convert the <code>InternalEmployee<\/code> to formatted XML String<\/li>\n<li>Line 47: Call <code>printOutAsXml<\/code> to demonstrate the JAXB usage<\/li>\n<\/ul>\n<h3>5.3.\u00a0Create Company Employee<\/h3>\n<p>Create\u00a0<code>InternalEmployee<\/code> to represent the actual employee data for the company. In this example, it extends from the generated <code>EmployeeInfo<\/code> with additional data.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>InternalEmployee.java<\/em><\/span><\/p>\n<pre class=\"brush:java; wrap-lines:false; highlight:[9,12,15]\">package jcg.demo.model;\r\n\r\nimport javax.xml.bind.annotation.XmlAttribute;\r\nimport javax.xml.bind.annotation.XmlRootElement;\r\nimport javax.xml.bind.annotation.XmlTransient;\r\n\r\nimport jcg.demo.service.employee.EmployeeInfo;\r\n\r\n@XmlRootElement\r\npublic class InternalEmployee extends EmployeeInfo {\r\n\r\n\t@XmlAttribute\r\n\tprivate String internal;\r\n\t\r\n\t@XmlTransient\r\n\tprivate String hiddenFromXml;\r\n\r\n\tpublic String getInternal() {\r\n\t\treturn internal;\r\n\t}\r\n\r\n\tpublic void setInternal(String internal) {\r\n\t\tthis.internal = internal;\r\n\t}\r\n\r\n\tpublic String getHiddenFromXml() {\r\n\t\treturn hiddenFromXml;\r\n\t}\r\n\r\n\tpublic void setHiddenFromXml(String hiddenFromXml) {\r\n\t\tthis.hiddenFromXml = hiddenFromXml;\r\n\t}\r\n\r\n}\r\n<\/pre>\n<ul>\n<li>Line 9,12,15: JAXB annotation usage<\/li>\n<\/ul>\n<h3>5.4.\u00a0Create JAX-WS Server<\/h3>\n<p>Create a simple Java application to publish the service at <code>http:\/\/localhost:9990\/EmployeeLookupService<\/code>.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>ServerApp .java<\/em><\/span><\/p>\n<pre class=\"brush:java; wrap-lines:false\">package jcg.demo.app;\r\n\r\nimport javax.xml.ws.Endpoint;\r\n\r\nimport jcg.demo.service.impl.EmployeeLookupServiceImpl;\r\n\r\npublic class ServerApp {\r\n\tpublic static void main(String[] args) {\r\n\t\tEndpoint.publish(\"http:\/\/localhost:9990\/EmployeeLookupService\", new EmployeeLookupServiceImpl());\r\n\t}\r\n}\r\n<\/pre>\n<p>Image below shows the Java project detail.<\/p>\n<p><figure id=\"attachment_54773\" aria-describedby=\"caption-attachment-54773\" style=\"width: 489px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/01\/jax-ws-jxb.jpg\"><img decoding=\"async\" class=\"size-full wp-image-54773\" src=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/01\/jax-ws-jxb.jpg\" alt=\"\" width=\"489\" height=\"538\" srcset=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/01\/jax-ws-jxb.jpg 489w, https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/01\/jax-ws-jxb-273x300.jpg 273w\" sizes=\"(max-width: 489px) 100vw, 489px\" \/><\/a><figcaption id=\"caption-attachment-54773\" class=\"wp-caption-text\">Figure 1 Jax-ws project<\/figcaption><\/figure><\/p>\n<h2>6. Demo Time<\/h2>\n<p>Start <code>ServerApp<\/code> and navigate to <code>http:\/\/localhost:9990\/EmployeeLookupService<\/code>. Test with <code>SOAPUI<\/code> project.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>SOAPUI request<\/em><\/span><\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;soapenv:Envelope xmlns:soapenv=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" xmlns:emp=\"http:\/\/bestpay.payroll\/employee\"&gt;\r\n   &lt;soapenv:Header\/&gt;\r\n   &lt;soapenv:Body&gt;\r\n      &lt;emp:EmployeeIdList&gt;\r\n         &lt;!--Zero or more repetitions:--&gt;\r\n         &lt;emp:eid&gt;emp001&lt;\/emp:eid&gt;\r\n         &lt;emp:eid&gt;emp002&lt;\/emp:eid&gt;\r\n         &lt;emp:eid&gt;emp003&lt;\/emp:eid&gt;\r\n      &lt;\/emp:EmployeeIdList&gt;\r\n   &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\n<p><span style=\"text-decoration: underline;\"><em>SOAPUI Response<\/em><\/span><\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;S:Envelope xmlns:S=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\"&gt;\r\n   &lt;S:Body&gt;\r\n      &lt;EmployeeInfoList xmlns=\"http:\/\/bestpay.payroll\/employee\"&gt;\r\n         &lt;employeeInfo&gt;\r\n            &lt;eid&gt;emp001&lt;\/eid&gt;\r\n            &lt;firstName&gt;FName_emp001&lt;\/firstName&gt;\r\n            &lt;lastName&gt;LName_emp001&lt;\/lastName&gt;\r\n            &lt;hourlyRate&gt;39&lt;\/hourlyRate&gt;\r\n            &lt;type&gt;Hourly&lt;\/type&gt;\r\n         &lt;\/employeeInfo&gt;\r\n         &lt;employeeInfo&gt;\r\n            &lt;eid&gt;emp002&lt;\/eid&gt;\r\n            &lt;firstName&gt;FName_emp002&lt;\/firstName&gt;\r\n            &lt;lastName&gt;LName_emp002&lt;\/lastName&gt;\r\n            &lt;hourlyRate&gt;35&lt;\/hourlyRate&gt;\r\n            &lt;type&gt;Hourly&lt;\/type&gt;\r\n         &lt;\/employeeInfo&gt;\r\n         &lt;employeeInfo&gt;\r\n            &lt;eid&gt;emp003&lt;\/eid&gt;\r\n            &lt;firstName&gt;FName_emp003&lt;\/firstName&gt;\r\n            &lt;lastName&gt;LName_emp003&lt;\/lastName&gt;\r\n            &lt;hourlyRate&gt;34&lt;\/hourlyRate&gt;\r\n            &lt;type&gt;Hourly&lt;\/type&gt;\r\n         &lt;\/employeeInfo&gt;\r\n      &lt;\/EmployeeInfoList&gt;\r\n   &lt;\/S:Body&gt;\r\n&lt;\/S:Envelope&gt;<\/pre>\n<p><code>ServerApp<\/code> also prints out the employee data.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>ServerApp output<\/em><\/span><\/p>\n<pre class=\"brush:bash; wrap-lines:false\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?&gt;\r\n&lt;internalEmployee xmlns:ns2=\"http:\/\/bestpay.payroll\/employee\" internal=\"Internal data emp001\"&gt;\r\n    &lt;ns2:eid&gt;emp001&lt;\/ns2:eid&gt;\r\n    &lt;ns2:firstName&gt;FName_emp001&lt;\/ns2:firstName&gt;\r\n    &lt;ns2:lastName&gt;LName_emp001&lt;\/ns2:lastName&gt;\r\n    &lt;ns2:hourlyRate&gt;39&lt;\/ns2:hourlyRate&gt;\r\n    &lt;ns2:type&gt;Hourly&lt;\/ns2:type&gt;\r\n&lt;\/internalEmployee&gt;\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?&gt;\r\n&lt;internalEmployee xmlns:ns2=\"http:\/\/bestpay.payroll\/employee\" internal=\"Internal data emp002\"&gt;\r\n    &lt;ns2:eid&gt;emp002&lt;\/ns2:eid&gt;\r\n    &lt;ns2:firstName&gt;FName_emp002&lt;\/ns2:firstName&gt;\r\n    &lt;ns2:lastName&gt;LName_emp002&lt;\/ns2:lastName&gt;\r\n    &lt;ns2:hourlyRate&gt;35&lt;\/ns2:hourlyRate&gt;\r\n    &lt;ns2:type&gt;Hourly&lt;\/ns2:type&gt;\r\n&lt;\/internalEmployee&gt;\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?&gt;\r\n&lt;internalEmployee xmlns:ns2=\"http:\/\/bestpay.payroll\/employee\" internal=\"Internal data emp003\"&gt;\r\n    &lt;ns2:eid&gt;emp003&lt;\/ns2:eid&gt;\r\n    &lt;ns2:firstName&gt;FName_emp003&lt;\/ns2:firstName&gt;\r\n    &lt;ns2:lastName&gt;LName_emp003&lt;\/ns2:lastName&gt;\r\n    &lt;ns2:hourlyRate&gt;34&lt;\/ns2:hourlyRate&gt;\r\n    &lt;ns2:type&gt;Hourly&lt;\/ns2:type&gt;\r\n&lt;\/internalEmployee&gt;\r\n<\/pre>\n<p><strong>Note<\/strong>: <code>internal<\/code> is printed as an attribute and the <code>hiddenFromXml<\/code> is not printed out.<\/p>\n<h2>7. Summary<\/h2>\n<p>In this example, I built a JAX-WS server based on WSDL definition. I verified the generated source code with JAXB annotation and created new data model which extends from the generated code with additional JAXB annotation.<\/p>\n<h2>8. Download the Source Code<\/h2>\n<p>This example consists of a JAX-WS service with JAXB usage.<\/p>\n<div class=\"download\"><strong>Download<\/strong><br \/>\nYou can download the full source code of this example here: <a href=\"http:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2018\/01\/jax-ws-server-wsdl.zip\"><strong>JAX-WS JAXB Example<\/strong><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java Architecture for XML Binding (JAXB) is a Java-XML binding technology that simplifies the development of web services by enabling transformations between a schema and Java objects, and also between XML instance documents and &hellip;<\/p>\n","protected":false},"author":140,"featured_media":1240,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[461],"tags":[],"class_list":["post-54738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jws"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JAX-WS JAXB Example - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JAX-WS JAXB Example - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java\" \/>\n<meta property=\"og:url\" content=\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Examples Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-29T13:00:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Mary Zheng\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mary Zheng\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\"},\"author\":{\"name\":\"Mary Zheng\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/8a2034fbabcb20a9396e9819261855ae\"},\"headline\":\"JAX-WS JAXB Example\",\"datePublished\":\"2018-01-29T13:00:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\"},\"wordCount\":527,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg\",\"articleSection\":[\"jws\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\",\"name\":\"JAX-WS JAXB Example - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg\",\"datePublished\":\"2018-01-29T13:00:30+00:00\",\"description\":\"1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java\",\"breadcrumb\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/examples.javacodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Development\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"jws\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/jws\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"JAX-WS JAXB Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Examples and Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/javacodegeeks\",\"https:\/\/x.com\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/8a2034fbabcb20a9396e9819261855ae\",\"name\":\"Mary Zheng\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/Mary-Zheng_avatar_1510732235-96x96.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/Mary-Zheng_avatar_1510732235-96x96.jpg\",\"caption\":\"Mary Zheng\"},\"description\":\"Mary has graduated from Mechanical Engineering department at ShangHai JiaoTong University. She also holds a Master degree in Computer Science from Webster University. During her studies she has been involved with a large number of projects ranging from programming and software engineering. She works as a senior Software Engineer in the telecommunications sector where she acts as a leader and works with others to design, implement, and monitor the software solution.\",\"url\":\"https:\/\/examples.javacodegeeks.com\/author\/mary-zheng\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JAX-WS JAXB Example - Java Code Geeks","description":"1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/","og_locale":"en_US","og_type":"article","og_title":"JAX-WS JAXB Example - Java Code Geeks","og_description":"1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java","og_url":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/","og_site_name":"Examples Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2018-01-29T13:00:30+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Mary Zheng","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Mary Zheng","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#article","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/"},"author":{"name":"Mary Zheng","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/8a2034fbabcb20a9396e9819261855ae"},"headline":"JAX-WS JAXB Example","datePublished":"2018-01-29T13:00:30+00:00","mainEntityOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/"},"wordCount":527,"commentCount":4,"publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg","articleSection":["jws"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/","url":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/","name":"JAX-WS JAXB Example - Java Code Geeks","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg","datePublished":"2018-01-29T13:00:30+00:00","description":"1. Introduction Java Architecture for XML Web Services (JAX-WS) is a Java programming language for creating web services, particularly SOAP services. Java","breadcrumb":{"@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#primaryimage","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2012\/12\/enterprise-java-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/examples.javacodegeeks.com\/java-development\/enterprise-java\/jws\/jax-ws-jaxb-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/examples.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java Development","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/"},{"@type":"ListItem","position":4,"name":"jws","item":"https:\/\/examples.javacodegeeks.com\/category\/java-development\/enterprise-java\/jws\/"},{"@type":"ListItem","position":5,"name":"JAX-WS JAXB Example"}]},{"@type":"WebSite","@id":"https:\/\/examples.javacodegeeks.com\/#website","url":"https:\/\/examples.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Examples and Code Snippets","publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/examples.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/examples.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/8a2034fbabcb20a9396e9819261855ae","name":"Mary Zheng","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/Mary-Zheng_avatar_1510732235-96x96.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2017\/11\/Mary-Zheng_avatar_1510732235-96x96.jpg","caption":"Mary Zheng"},"description":"Mary has graduated from Mechanical Engineering department at ShangHai JiaoTong University. She also holds a Master degree in Computer Science from Webster University. During her studies she has been involved with a large number of projects ranging from programming and software engineering. She works as a senior Software Engineer in the telecommunications sector where she acts as a leader and works with others to design, implement, and monitor the software solution.","url":"https:\/\/examples.javacodegeeks.com\/author\/mary-zheng\/"}]}},"_links":{"self":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/54738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/users\/140"}],"replies":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=54738"}],"version-history":[{"count":0,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/54738\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media\/1240"}],"wp:attachment":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=54738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=54738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=54738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}