We used cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it. What For?

JAX-WS in Liferay DXP/7

Liferay provides JAX web services implementation using Apache CXF. There are two types of web services Liferay supports. 1) JAX-WS 2) JAX-RS.

Here I am going to explain JAX-WS in Liferay 7/DXP.

There are basically two things you need to understand to create JAX web services in Liferay.

  1. CXF Endpoints

  • CXF Endpoints are context paths where JAX web services are deployed. E.g you can define CXF endpoints /soap and then you can create extender which deploy web services to this context path.
  1. Extenders

  • Extender is used to deploy web services to specified CXF endpoints. For example, If you define /soap endpoint while creating extender then all the web services registered with this extender will be available at /soap endpoint.

There are two types of extender : SOAP Extenders and REST Extenders. SOAP Extenders are used to publish JAX-WS web services and REST Extenders are used to publish JAX-RS web services.

You can define CXF endpoints and extenders from control panel or programmatically. Here I am going to show you programmatically.

First create module project of service type in your IDE.

Add Configuration Path :

Add following configuration attributes in bnd.bnd file.

configurationPath: /configuration
Include-Resource: configuration=src/main/resources/configuration

 

src/main/resources/configuration is path where you will define configuration for endpoints and extenders.

 

Configure CXF Endpoints :

Create a file com.liferay.portal.remote.cxf.common.configuration.CXFEndpointPublisherConfiguration-cxf in configuration folder.

 

Here I am going to define /soap context path as following.

contextPath=/soap
authVerifierProperties=auth.verifier.PortalSessionAuthVerifier.urls.includes=*

 

AuthVerifier properties: Any properties defined here are passed as-is to the AuthVerifier filter. See the AuthVerifier documentation for more details.

Configure SOAP Extender :

Create a file com.liferay.portal.remote.soap.extender.configuration.SoapExtenderConfiguration-soap in configuration folder.

Define extender which will deploy web services to /soap context path.

contextPaths=/soap
jaxWsServiceFilterStrings=(component.name={{jax-ws service class}})

 

Create JAX-WS service class:

 

package com.st.liferay7.jaxws.calculatorservice;
 

import javax.jws.WebMethod;
import javax.jws.WebService;
 

import org.osgi.service.component.annotations.Component;
 

@Component(
immediate = true,
property = "jaxws=true",
service = Calculator.class
)
 

@WebService
public class Calculator {
 
   @WebMethod
   public int divide(int a, int b) {
       return a / b;
   }
 

   @WebMethod
   public int multiply(int a, int b) {
       return a * b;
   }
 

   @WebMethod
   public int subtract(int a, int b) {
       return a - b;
   }
 

   @WebMethod
   public int sum(int a, int b) {
       return a + b;
   }
}

 

To publish JAX-WS web services via SOAP in a Liferay Portal CE 7.0 module, annotate the class and its methods with standard JAX-WS annotations. For example, the above class uses the @WebService annotation for the class and @WebMethod annotations for its methods. You must also set the jaxws property to true in the OSGi @Component annotation.

Deploy module on your Liferay server. If module is configured and deployed properly you can see cxf endpoint and soap extender created from Control Panel > Configuration > System Settings.

You can see all the web services from /o/{{cxfendpoints}} path. Here try /o/soap, it will show list of web services registered for /soap context path.

That’s it.

Download :

soap calculator service(jar)

For more implementation details or support you may contact us at [email protected].

contact-us Request a callback WhatsApp