From a7b7ccad2da4a4e4b767b8b36a025f16011508fc Mon Sep 17 00:00:00 2001 From: "Eunice A. Obugyei" Date: Tue, 25 Apr 2017 04:55:34 +0000 Subject: [PATCH] Introduction to JAX-WS (#1696) * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Removed unnecessary comment * Added mockito-core dependency * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] Added Exception test cases * Applied baeldung formatter in Eclipse * Merged from https://github.com/eugenp/tutorials Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Revert "Merged from https://github.com/eugenp/tutorials" This reverts commit 74447a163b9e3f244a2578315fbdb525d20cd16b. * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Removed mockito version from properties * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] --- .../jaxws/client/EmployeeServiceClient.java | 25 +++++ .../config/EmployeeServicePublisher.java | 12 --- .../bottomup}/EmployeeService.java | 8 +- .../bottomup}/EmployeeServiceImpl.java | 12 +-- .../exception/EmployeeAlreadyExists.java | 2 +- .../bottomup}/exception/EmployeeNotFound.java | 2 +- .../{ => server/bottomup}/model/Employee.java | 2 +- .../config/EmployeeServicePublisher.java | 14 +++ .../repository/EmployeeRepository.java | 8 +- .../repository/EmployeeRepositoryImpl.java | 8 +- .../topdown/EmployeeServiceTopDown.java | 34 +++++++ .../topdown/EmployeeServiceTopDownImpl.java | 19 ++++ .../EmployeeServiceTopDown_Service.java | 94 +++++++++++++++++++ .../jaxws/server/topdown/ObjectFactory.java | 45 +++++++++ .../jaxws/wsdl/employeeservicetopdown.wsdl | 42 +++++++++ 15 files changed, 294 insertions(+), 33 deletions(-) create mode 100644 jee7/src/main/java/com/baeldung/jaxws/client/EmployeeServiceClient.java delete mode 100644 jee7/src/main/java/com/baeldung/jaxws/config/EmployeeServicePublisher.java rename jee7/src/main/java/com/baeldung/jaxws/{ => server/bottomup}/EmployeeService.java (69%) rename jee7/src/main/java/com/baeldung/jaxws/{ => server/bottomup}/EmployeeServiceImpl.java (76%) rename jee7/src/main/java/com/baeldung/jaxws/{ => server/bottomup}/exception/EmployeeAlreadyExists.java (83%) rename jee7/src/main/java/com/baeldung/jaxws/{ => server/bottomup}/exception/EmployeeNotFound.java (82%) rename jee7/src/main/java/com/baeldung/jaxws/{ => server/bottomup}/model/Employee.java (90%) create mode 100644 jee7/src/main/java/com/baeldung/jaxws/server/config/EmployeeServicePublisher.java rename jee7/src/main/java/com/baeldung/jaxws/{ => server}/repository/EmployeeRepository.java (61%) rename jee7/src/main/java/com/baeldung/jaxws/{ => server}/repository/EmployeeRepositoryImpl.java (87%) create mode 100644 jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown.java create mode 100644 jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDownImpl.java create mode 100644 jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown_Service.java create mode 100644 jee7/src/main/java/com/baeldung/jaxws/server/topdown/ObjectFactory.java create mode 100644 jee7/src/main/java/com/baeldung/jaxws/wsdl/employeeservicetopdown.wsdl diff --git a/jee7/src/main/java/com/baeldung/jaxws/client/EmployeeServiceClient.java b/jee7/src/main/java/com/baeldung/jaxws/client/EmployeeServiceClient.java new file mode 100644 index 0000000000..3d5450690a --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/client/EmployeeServiceClient.java @@ -0,0 +1,25 @@ +package com.baeldung.jaxws.client; + + +import com.baeldung.jaxws.server.bottomup.EmployeeService; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; +import java.net.URL; + +public class EmployeeServiceClient { + + public static void main(String[] args) throws Exception { + + URL url = new URL("http://localhost:8081/employeeservice?wsdl"); + QName qname = new QName("http://bottomup.server.jaxws.baeldung.com/", "EmployeeServiceImplService"); + + Service service = Service.create(url, qname); + + EmployeeService employeeService = service.getPort(EmployeeService.class); + employeeService.countEmployees(); + + System.out.println(employeeService.countEmployees()); + + } +} \ No newline at end of file diff --git a/jee7/src/main/java/com/baeldung/jaxws/config/EmployeeServicePublisher.java b/jee7/src/main/java/com/baeldung/jaxws/config/EmployeeServicePublisher.java deleted file mode 100644 index ac3b049320..0000000000 --- a/jee7/src/main/java/com/baeldung/jaxws/config/EmployeeServicePublisher.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.jaxws.config; - -import javax.xml.ws.Endpoint; - -import com.baeldung.jaxws.EmployeeServiceImpl; - -public class EmployeeServicePublisher { - - public static void main(String[] args) { - Endpoint.publish("http://localhost:8080/employeeservice", new EmployeeServiceImpl()); - } -} diff --git a/jee7/src/main/java/com/baeldung/jaxws/EmployeeService.java b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/EmployeeService.java similarity index 69% rename from jee7/src/main/java/com/baeldung/jaxws/EmployeeService.java rename to jee7/src/main/java/com/baeldung/jaxws/server/bottomup/EmployeeService.java index 9735607da6..7381e58dad 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/EmployeeService.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/EmployeeService.java @@ -1,13 +1,13 @@ -package com.baeldung.jaxws; +package com.baeldung.jaxws.server.bottomup; import java.util.List; import javax.jws.WebMethod; import javax.jws.WebService; -import com.baeldung.jaxws.exception.EmployeeAlreadyExists; -import com.baeldung.jaxws.exception.EmployeeNotFound; -import com.baeldung.jaxws.model.Employee; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeAlreadyExists; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeNotFound; +import com.baeldung.jaxws.server.bottomup.model.Employee; @WebService public interface EmployeeService { diff --git a/jee7/src/main/java/com/baeldung/jaxws/EmployeeServiceImpl.java b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/EmployeeServiceImpl.java similarity index 76% rename from jee7/src/main/java/com/baeldung/jaxws/EmployeeServiceImpl.java rename to jee7/src/main/java/com/baeldung/jaxws/server/bottomup/EmployeeServiceImpl.java index c1c9cd4385..602a2f7336 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/EmployeeServiceImpl.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/EmployeeServiceImpl.java @@ -1,4 +1,4 @@ -package com.baeldung.jaxws; +package com.baeldung.jaxws.server.bottomup; import java.util.List; @@ -6,12 +6,12 @@ import javax.inject.Inject; import javax.jws.WebMethod; import javax.jws.WebService; -import com.baeldung.jaxws.exception.EmployeeAlreadyExists; -import com.baeldung.jaxws.exception.EmployeeNotFound; -import com.baeldung.jaxws.model.Employee; -import com.baeldung.jaxws.repository.EmployeeRepository; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeAlreadyExists; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeNotFound; +import com.baeldung.jaxws.server.bottomup.model.Employee; +import com.baeldung.jaxws.server.repository.EmployeeRepository; -@WebService(serviceName = "EmployeeService", endpointInterface = "com.baeldung.jaxws.EmployeeService") +@WebService(serviceName = "EmployeeService", endpointInterface = "com.baeldung.jaxws.server.bottomup.EmployeeService") public class EmployeeServiceImpl implements EmployeeService { @Inject diff --git a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/exception/EmployeeAlreadyExists.java similarity index 83% rename from jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java rename to jee7/src/main/java/com/baeldung/jaxws/server/bottomup/exception/EmployeeAlreadyExists.java index 8a96f8aec0..26fd80f1e5 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/exception/EmployeeAlreadyExists.java @@ -1,4 +1,4 @@ -package com.baeldung.jaxws.exception; +package com.baeldung.jaxws.server.bottomup.exception; import javax.xml.ws.WebFault; diff --git a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/exception/EmployeeNotFound.java similarity index 82% rename from jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java rename to jee7/src/main/java/com/baeldung/jaxws/server/bottomup/exception/EmployeeNotFound.java index 3de2ca8db6..52397d55a3 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/exception/EmployeeNotFound.java @@ -1,4 +1,4 @@ -package com.baeldung.jaxws.exception; +package com.baeldung.jaxws.server.bottomup.exception; import javax.xml.ws.WebFault; diff --git a/jee7/src/main/java/com/baeldung/jaxws/model/Employee.java b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/model/Employee.java similarity index 90% rename from jee7/src/main/java/com/baeldung/jaxws/model/Employee.java rename to jee7/src/main/java/com/baeldung/jaxws/server/bottomup/model/Employee.java index dbbdc234cf..089ff88aa2 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/model/Employee.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/bottomup/model/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.jaxws.model; +package com.baeldung.jaxws.server.bottomup.model; public class Employee { private int id; diff --git a/jee7/src/main/java/com/baeldung/jaxws/server/config/EmployeeServicePublisher.java b/jee7/src/main/java/com/baeldung/jaxws/server/config/EmployeeServicePublisher.java new file mode 100644 index 0000000000..8659833f99 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/server/config/EmployeeServicePublisher.java @@ -0,0 +1,14 @@ +package com.baeldung.jaxws.server.config; + +import javax.xml.ws.Endpoint; + +import com.baeldung.jaxws.server.bottomup.EmployeeServiceImpl; +import com.baeldung.jaxws.server.topdown.EmployeeServiceTopDownImpl; + +public class EmployeeServicePublisher { + + public static void main(String[] args) { + Endpoint.publish("http://localhost:8080/employeeservicetopdown", new EmployeeServiceTopDownImpl()); + Endpoint.publish("http://localhost:8080/employeeservice", new EmployeeServiceImpl()); + } +} diff --git a/jee7/src/main/java/com/baeldung/jaxws/repository/EmployeeRepository.java b/jee7/src/main/java/com/baeldung/jaxws/server/repository/EmployeeRepository.java similarity index 61% rename from jee7/src/main/java/com/baeldung/jaxws/repository/EmployeeRepository.java rename to jee7/src/main/java/com/baeldung/jaxws/server/repository/EmployeeRepository.java index 0d5dec0462..c9d8b4d33c 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/repository/EmployeeRepository.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/repository/EmployeeRepository.java @@ -1,10 +1,10 @@ -package com.baeldung.jaxws.repository; +package com.baeldung.jaxws.server.repository; import java.util.List; -import com.baeldung.jaxws.exception.EmployeeAlreadyExists; -import com.baeldung.jaxws.exception.EmployeeNotFound; -import com.baeldung.jaxws.model.Employee; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeAlreadyExists; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeNotFound; +import com.baeldung.jaxws.server.bottomup.model.Employee; public interface EmployeeRepository { diff --git a/jee7/src/main/java/com/baeldung/jaxws/repository/EmployeeRepositoryImpl.java b/jee7/src/main/java/com/baeldung/jaxws/server/repository/EmployeeRepositoryImpl.java similarity index 87% rename from jee7/src/main/java/com/baeldung/jaxws/repository/EmployeeRepositoryImpl.java rename to jee7/src/main/java/com/baeldung/jaxws/server/repository/EmployeeRepositoryImpl.java index f67509fff5..f211c4f25b 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/repository/EmployeeRepositoryImpl.java +++ b/jee7/src/main/java/com/baeldung/jaxws/server/repository/EmployeeRepositoryImpl.java @@ -1,11 +1,11 @@ -package com.baeldung.jaxws.repository; +package com.baeldung.jaxws.server.repository; import java.util.ArrayList; import java.util.List; -import com.baeldung.jaxws.exception.EmployeeAlreadyExists; -import com.baeldung.jaxws.exception.EmployeeNotFound; -import com.baeldung.jaxws.model.Employee; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeAlreadyExists; +import com.baeldung.jaxws.server.bottomup.exception.EmployeeNotFound; +import com.baeldung.jaxws.server.bottomup.model.Employee; public class EmployeeRepositoryImpl implements EmployeeRepository { private List employeeList; diff --git a/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown.java b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown.java new file mode 100644 index 0000000000..ec4103438b --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown.java @@ -0,0 +1,34 @@ + +package com.baeldung.jaxws.server.topdown; + +import javax.jws.WebMethod; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; +import javax.xml.bind.annotation.XmlSeeAlso; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.2.4-b01 + * Generated source version: 2.2 + * + */ +@WebService(name = "EmployeeServiceTopDown", targetNamespace = "http://topdown.server.jaxws.baeldung.com/") +@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) +@XmlSeeAlso({ + ObjectFactory.class +}) +public interface EmployeeServiceTopDown { + + + /** + * + * @return + * returns int + */ + @WebMethod(action = "http://topdown.server.jaxws.baeldung.com/EmployeeServiceTopDown/countEmployees") + @WebResult(name = "countEmployeesResponse", targetNamespace = "http://topdown.server.jaxws.baeldung.com/", partName = "parameters") + public int countEmployees(); + +} diff --git a/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDownImpl.java b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDownImpl.java new file mode 100644 index 0000000000..bd46c025b7 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDownImpl.java @@ -0,0 +1,19 @@ +package com.baeldung.jaxws.server.topdown; + +import com.baeldung.jaxws.server.repository.EmployeeRepository; + +import javax.inject.Inject; +import javax.jws.WebMethod; +import javax.jws.WebService; + + +@WebService(name = "EmployeeServiceTopDown", targetNamespace = "http://topdown.server.jaxws.baeldung.com/", endpointInterface = "com.baeldung.jaxws.server.topdown.EmployeeServiceTopDown") +public class EmployeeServiceTopDownImpl implements EmployeeServiceTopDown { + + @Inject private EmployeeRepository employeeRepositoryImpl; + + @WebMethod + public int countEmployees() { + return employeeRepositoryImpl.count(); + } +} diff --git a/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown_Service.java b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown_Service.java new file mode 100644 index 0000000000..ee3382adb6 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/EmployeeServiceTopDown_Service.java @@ -0,0 +1,94 @@ + +package com.baeldung.jaxws.server.topdown; + +import java.net.MalformedURLException; +import java.net.URL; +import javax.xml.namespace.QName; +import javax.xml.ws.Service; +import javax.xml.ws.WebEndpoint; +import javax.xml.ws.WebServiceClient; +import javax.xml.ws.WebServiceException; +import javax.xml.ws.WebServiceFeature; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.2.4-b01 + * Generated source version: 2.2 + * + */ +@WebServiceClient(name = "EmployeeServiceTopDown", targetNamespace = "http://topdown.server.jaxws.baeldung.com/", wsdlLocation = "file:/Users/do-enr-lap-4/Developer/baeldung/source/tutorials/jee7/src/main/java/com/baeldung/jaxws/server/topdown/wsdl/employeeservicetopdown.wsdl") +public class EmployeeServiceTopDown_Service + extends Service +{ + + private final static URL EMPLOYEESERVICETOPDOWN_WSDL_LOCATION; + private final static WebServiceException EMPLOYEESERVICETOPDOWN_EXCEPTION; + private final static QName EMPLOYEESERVICETOPDOWN_QNAME = new QName("http://topdown.server.jaxws.baeldung.com/", "EmployeeServiceTopDown"); + + static { + URL url = null; + WebServiceException e = null; + try { + url = new URL("file:/Users/do-enr-lap-4/Developer/baeldung/source/tutorials/jee7/src/main/java/com/baeldung/jaxws/server/topdown/wsdl/employeeservicetopdown.wsdl"); + } catch (MalformedURLException ex) { + e = new WebServiceException(ex); + } + EMPLOYEESERVICETOPDOWN_WSDL_LOCATION = url; + EMPLOYEESERVICETOPDOWN_EXCEPTION = e; + } + + public EmployeeServiceTopDown_Service() { + super(__getWsdlLocation(), EMPLOYEESERVICETOPDOWN_QNAME); + } + + public EmployeeServiceTopDown_Service(WebServiceFeature... features) { + super(__getWsdlLocation(), EMPLOYEESERVICETOPDOWN_QNAME, features); + } + + public EmployeeServiceTopDown_Service(URL wsdlLocation) { + super(wsdlLocation, EMPLOYEESERVICETOPDOWN_QNAME); + } + + public EmployeeServiceTopDown_Service(URL wsdlLocation, WebServiceFeature... features) { + super(wsdlLocation, EMPLOYEESERVICETOPDOWN_QNAME, features); + } + + public EmployeeServiceTopDown_Service(URL wsdlLocation, QName serviceName) { + super(wsdlLocation, serviceName); + } + + public EmployeeServiceTopDown_Service(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { + super(wsdlLocation, serviceName, features); + } + + /** + * + * @return + * returns EmployeeServiceTopDown + */ + @WebEndpoint(name = "EmployeeServiceTopDownSOAP") + public EmployeeServiceTopDown getEmployeeServiceTopDownSOAP() { + return super.getPort(new QName("http://topdown.server.jaxws.baeldung.com/", "EmployeeServiceTopDownSOAP"), EmployeeServiceTopDown.class); + } + + /** + * + * @param features + * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the features parameter will have their default values. + * @return + * returns EmployeeServiceTopDown + */ + @WebEndpoint(name = "EmployeeServiceTopDownSOAP") + public EmployeeServiceTopDown getEmployeeServiceTopDownSOAP(WebServiceFeature... features) { + return super.getPort(new QName("http://topdown.server.jaxws.baeldung.com/", "EmployeeServiceTopDownSOAP"), EmployeeServiceTopDown.class, features); + } + + private static URL __getWsdlLocation() { + if (EMPLOYEESERVICETOPDOWN_EXCEPTION!= null) { + throw EMPLOYEESERVICETOPDOWN_EXCEPTION; + } + return EMPLOYEESERVICETOPDOWN_WSDL_LOCATION; + } + +} diff --git a/jee7/src/main/java/com/baeldung/jaxws/server/topdown/ObjectFactory.java b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/ObjectFactory.java new file mode 100644 index 0000000000..53e23eee5d --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/server/topdown/ObjectFactory.java @@ -0,0 +1,45 @@ + +package com.baeldung.jaxws.server.topdown; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the com.baeldung.jaxws.server.topdown package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _CountEmployeesResponse_QNAME = new QName("http://topdown.server.jaxws.baeldung.com/", "countEmployeesResponse"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.baeldung.jaxws.server.topdown + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}} + * + */ + @XmlElementDecl(namespace = "http://topdown.server.jaxws.baeldung.com/", name = "countEmployeesResponse") + public JAXBElement createCountEmployeesResponse(Integer value) { + return new JAXBElement(_CountEmployeesResponse_QNAME, Integer.class, null, value); + } + +} diff --git a/jee7/src/main/java/com/baeldung/jaxws/wsdl/employeeservicetopdown.wsdl b/jee7/src/main/java/com/baeldung/jaxws/wsdl/employeeservicetopdown.wsdl new file mode 100644 index 0000000000..426717f90e --- /dev/null +++ b/jee7/src/main/java/com/baeldung/jaxws/wsdl/employeeservicetopdown.wsdl @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file