How to connect to LDAP server using Java naming and directory interface(JNDI)

Hello Friends,

In this tutorial,we will see how to connect to LDAP server using JDK's standard Java naming and directory interface.
public class LdapService  {
private static final String INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial";
/* provider url*/
 public static final String PROVIDER_URL = "java.naming.provider.url";
 
 /*Security Authentication*/
 public static final String SECURITY_AUTHENTICATION = "java.naming.security.authentication";
 
 /*Security Principal*/
 public static final String SECURITY_PRINCIPAL = "java.naming.security.principal";
 
 /*Security credentials*/
 public static final String SECURITY_CREDENTIALS = "java.naming.security.credentials";
 
 /*ldap version*/
 public static final String LDAP_VERSION =  "java.naming.ldap.version";
 
 /*base dn*/
 public static final String BASE_DN = "ou=subjects,o=ed";
 
 /**nameSpaceBinding*/
 @Autowired
 private NameSpaceBinding nameSpaceBinding;
 
 /**ATTRIBUTE_IDS */
 private static final String[] ATTRIBUTE_IDS = { "firstName","surname","mobileNumber","departmentNumber","departmentName" };
 
 /**
  * @param env
  * @param user
  * @throws NamingException
  */
 public User fetchDataByUserId() {
  try{
  Hashtable<String,String> env = setLdapConfigurationData();
  DirContext ctx  = new InitialDirContext(env);
  SearchControls ctls = new SearchControls();
  
  // Specify the attribute list to be returned
  ctls.setReturningAttributes(ATTRIBUTE_IDS);
  ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
   
     // Specify the search filter to match
    String  filter = "(&(objectClass=User)(idmUID="gaurav123"))";
   
     // Search the subtree for objects using the given filter
     // Search the subtree for objects using the given filter
NamingEnumeration<SearchResult> results = ctx.search(CsaConstants.BASE_DN, filter, ctls);
if (results != null) {
 iterateResults(results,user);
    }
}catch(CommunicationException communicationException){ System.out.println("Error communicating with Ldap server "); }catch(NamingException namingException){ System.out.println("Error while doing JNDI look up"); } }
/**
 * @param results
 * @param user
 * @throws NamingException 
 */
 private void iterateResults(NamingEnumeration<SearchResult> results,User user) throws NamingException{
 while (results.hasMoreElements()) {
  SearchResult sr = (SearchResult) results.next();
  Attributes attrs = sr.getAttributes();
  if (attrs != null) {
   // we have some attributes for this object
   NamingEnumeration ae = attrs.getAll();
   while (ae.hasMoreElements()) {
    setAttributeInUser(ae, user);
   }
  }
 }
}
/**
  * This method sets attribute values in User object.
  *
  * @param ae
  * @param user
  * @throws NamingException
  */
 private void  setAttributeInUser(NamingEnumeration ae,User user) throws NamingException{
 Attribute attr = (Attribute)ae.next();
        String attrId = attr.getID();
        switch (attrId){
         case "firstName" :
          user.setFirstName((String)attr.get());
          break;
        case "surName" :
          user.setSurName((String)attr.get());
          break;
        case "mobileNumber" :
                 user.setMobileNumber((String)attr.get());
                 break;
         case "departmentNumber" :
         user.setDepartmentNumber((String)attr.get());
         break;
         case "departmentName" :
         user.setDepartmentName((String)attr.get());
         break;
        default :
          System.out.println("In default section");
        }
     }

 /**
  * This method adds Ldap configuration data in Hash table.
  * @throws NamingException
  */
 private Hashtable<String,String>  setLdapConfigurationData() throws NamingException{
  Hashtable<String,String> env = new Hashtable<String,String>();
  env.put(INITIAL_CONTEXT_FACTORY,nameSpaceBinding.getProperty(INITIAL_CONTEXT_FACTORY));
  env.put(PROVIDER_URL,nameSpaceBinding.getProperty(PROVIDER_URL));
  env.put(SECURITY_AUTHENTICATION,nameSpaceBinding.getProperty(SECURITY_AUTHENTICATION));
  env.put(SECURITY_PRINCIPAL,nameSpaceBinding.getProperty(SECURITY_PRINCIPAL));
  env.put(SECURITY_CREDENTIALS,nameSpaceBinding.getProperty(SECURITY_CREDENTIALS));
  env.put(LDAP_VERSION, nameSpaceBinding.getProperty(LDAP_VERSION));
  return env;
 }

}

NamespaceBinding Class

public class NameSpaceBinding {
 /**nsbContext */
 private final Context nsbContext;

    /**
     * @throws NamingException
     */
    public NameSpaceBinding() throws NamingException {
     nsbContext = getNsbContext();
    }

    /**
     * @return
     * @throws NamingException
     */
    public String getEnvironment() throws NamingException {
     return getProperty("environment");
    }

    /**
     * @return
     * @throws NamingException
     */
    private static Context getNsbContext() throws NamingException {
        final String nodeName = (String) new InitialContext().lookup("thisNode/nodename");
        final String serverName = (String) new InitialContext().lookup("servername");
        final String serverScopePrefix = String.format("cell/nodes/%s/servers/%s", nodeName, serverName);
        return (Context) new InitialContext().lookup(serverScopePrefix);
    }

    /**
     * @param name
     * @return
     * @throws NamingException
     */
    public String getProperty(final String name) throws NamingException {
        return (String) nsbContext.lookup(name);
    }

}
User Class

public class User {
 
 /** First name of user */
 private String firstName;
 
 /**surname */
 private String surName;

    /**mobile Number*/
 private String mobileNumber;
 
 /** departmentNumber */
 private String departmentNumber;
 
 /**Department Name */
 private String departmentName;
   
 /**
  * @return the firstName
  */
 public String getFirstName() {
  return firstName;
 }

 /**
  * @param firstName the firstName to set
  */
 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }

 /**
  * @return the departmentNumber
  */
 public String getDepartmentNumber() {
  return departmentNumber;
 }

 /**
  * @param departmentNumber the departmentNumber to set
  */
 public void setDepartmentNumber(String departmentNumber) {
  this.departmentNumber = departmentNumber;
 }

 /**
  * @return the departmentName
  */
 public String getDepartmentName() {
  return departmentName;
 }

 /**
  * @param departmentName the departmentName to set
  */
 public void setDepartmentName(String departmentName) {
  this.departmentName = departmentName;
 }

 /**
  * @return the mobileNumber
  */
 public String getMobileNumber() {
  return mobileNumber;
 }

 /**
  * @param mobileNumber the mobileNumber to set
  */
 public void setMobileNumber(String mobileNumber) {
  this.mobileNumber = mobileNumber;
 }

 /**
  * @return the surName
  */
 public String getSurName() {
  return surName;
 }

 /**
  * @param surName the surName to set
  */
 public void setSurName(String surName) {
  this.surName = surName;
 }
 
}
Name Space binding configuration in WebSphere 

1) Open admin Console of WebSphere and go to Enviorenment->Naming


2) Click on Name space bindings

3) We can add all configurations which we are picking using NameSpaceBinding class in setLdapConfigurationData method as name-value pair.

For that

3.1 Click on New...
3.2 Select binding type as String
3.3 Binding identifier can be any id for that specific property.Example : java.naming.factory.initial-st
3.4 Name should be name of property .Example : java.naming.factory.initial
3.5 String value should be value of property.Example : com.sun.jndi.ldap.LdapCtxFactory

Similarly all properties can be added here.

Advantage of Configuring LDAP connectivity specific configuration  in WebSphere and accessing through JNDI lookup 

By configuring LDAP connectivity specific settings in WebSphere,we are making sure that we don't have dependency on environment in our code,so the same code will run fine on all environments viz. ST,ET,Prod.Only thing which we need to do is configure environment specific setting on webSphere installed on different environments.

So with this,we saw how to connect to LDAP server using Java naming and directory interface(JNDI).Please let me know,if you face any issue while implementing above code.

Thanks for reading.

How to create Soap Web Service in Java with Example

Hello Friends,

In this tutorial,we will learn how to create Soap based Web Services in Java language.



Before we deep dive into that,let us understand what Web Service is actually.

                  Web Service = Web + Service

Web Service as its name implies is service provided over web.

After this definition, immediate question that comes to mind is that we have lot of web sites available which provides services to its clients/users over web,so are all these web sites which provides services over web/Internet are Web Services?

Answer is NO.

Web services are created to be consumed by the applications i.e. there will be some application code which will call(consume) web service(some method of web service) to use the functionality of the web service.

Example : Say I have my web application and on the home page of my application,I want to display Weather conditions(Temperature) ,then I can call web service which expose operation(method) to fetch Weather specific data from my web application and display the data on my web application.

Web applications are for human consumption via browser.

Example : Facebook,LinkedIn,Yahoo.

Let us see below steps to create Soap based web Service :

1) Create dynamic Web Project in Eclipse by right clicking in Project explorer and then select New-> Dynamic Web Project



2)
2.1) Give any name to project ,for example "FirstWebService".
2.2) Select Target Runtime as Apache Tomcat v8.0.
Note : You can use some other version of Tomcat as well or some other Servlet container as well.
2.3) Click Finish.



3) Below is how project structure will look like in Eclipse.



4)
4.1 Create a package within src folder with name nl.blogspot.javasolutionsguide.service by right clicking on src folder and then select New -> Package.


 

4.2 Within this package create a interface with name CalculatorService by right clicking on package name and then selecting New-> Class

package nl.blogspot.javasolutionsguide.service;

/**
 * @author JavaSolutionsGuide
 *
 */
public interface CalculatorService {

}


4.3 Add methods in CalculatorService ,which will be the operations exposed by this web service or in other words these will be the operations which client/consumer of this web service can expect from this web service.

package nl.blogspot.javasolutionsguide.service;

/**
 * @author JavaSolutionsGuide
 *
 */
public interface CalculatorService {
 
 public int add(int a,int b);
 
 public int subtract(int a,int b);
 
 public int multiply(int a, int b);
 
 public int division(int a,int b);

}



4.3 Create another package within src folder with name nl.blogspot.javasolutionsguide.service.impl
4.4 Create class with name CalculatorServiceImpl which should implement CalculatorService interface.

/**
 * @author JavaSolutionsGuide
 *
 */
public class CalculatorServiceImpl implements CalculatorService{

 @Override
 public int add(int a, int b) {
  return a + b;
 }

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

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

 @Override
 public int division(int a, int b) {
  return a/b;
 }

}

5) Right click on CalculatorServiceImpl file and select Web Services -> Create Web Services




6) You will see following wizard.

As you can see,in the "web service type",we have chosen "Bottom up Java bean Web Service",which means we will create Java code having implementation first and from that we will generate contract i.e. WSDL,which then can be shared with consumer of the web service.In another approach which is "Top down Java bean Web Service" approach ,first WSDL is created and then Implementation is created.

In the Service Implementation,give the name of CalculatorServiceImpl class which we created above.
Also make sure that In the web Service section and Client type section,slider is completely on left ,which means we want to get all steps performed for web service from Develop Service -> Assemble Service -> Deploy Service ->Install Service ->Test Service  and all following steps for web service client from Develop Client -> Assemble Client -> Deploy Client -> Install Client-> Start Client ->Test Client.



7) You will get following screen,wherein you can select which methods of CalculatorServiceIm class you want to expose.By default all the methods within class will be selected as can be seen in below screenshot.Click on next,as here we will expose all methods of CalculatorServiceImpl class.



8) You will get following screen.



9) Click on Start Server.You can see message "Currently server is started" in below screen now.




10) Click on Finish.As you can see in below screenshot,a new Web Service Client project with name "FirstWebServiceClient" has been automatically created(because in Client type section in step 6 ,we had moved slider to left most ,which means we want to get client created automatically and test web service using that client) and deployed on Tomcat server along with Web service "FirstWebService".


 and as we moved slider till "Test Client" in step 6 ,browser with TestClient.jsp from Client project "FirstWebServiceClient"  is opened to test Web Service,as can be seen in below screenshot.




11)Also You will see that eclipse has added WSDL,Axis and few more jars.Here Axis is nothing but one of the implementation of java Web Services specifications.

Now What is this WSDL.

WSDL stands for Web Service Description Language.

As its name implies,this file describes web service.It tells what all methods are there in web service (calculator class in our case) and what type of input parameters they expect and what are there return types.

The Service creator needs to share this WSDL to service consumer,so that service consumer will get to know which methods of service can be called and what type of input parameter consumer needs to send and what return type they can expect.Accordingly consumer will call service methods of exposed web service.Here for example purpose,we have created both Web Service and Consumer,but in real life ,normally ,we will either be provider or consumer of the web service at a time.

12) To test web service,subtract functionality,click on subtract link in above screenshot.we will get following screen,where we can enter our inputs.


13) Enter any input to test in two text boxes and click on invoke.This will invoke web service and we will be able to see result in "Result" section as can be seen in  below screenshot.


14) If we want to debug the code of our web service,we can restart the server in Debug mode and put breakpoint in CalculatorServiceImpl's method which we  want to debug and can invoke subtract again from TestClient.jsp


15) Click on Yes,and you will be in Subtract method for debugging as below :


Thats it.With this we saw how to create Soap Web Service in Java.

Thanks for reading.Please let me know,if you face any issue during implementation.

How to migrate from Jersey 1 to Jersey 2 on Websphere

Hello Friends,

In this tutorial,we will see how to migrate from Jersey 1 to Jersey 2.

Here I am taking example of Jersey 1 version 1.18.3 and Jersey 2 version 2.23.2.

Jersey 1.18.3 dependencies 

                     <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.18.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-spring</artifactId>
<version>1.18.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.18.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18.3</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>

</dependency>

Jersey 2.23.2 dependencies :

                       <dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.23.2</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-entity-filtering</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.bundles.repackaged</groupId>
<artifactId>jersey-guava</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
 <groupId>org.glassfish.jersey.media</groupId>
 <artifactId>jersey-media-json-jackson</artifactId>
 <version>2.23.2</version>
 <exclusions>
 <exclusion>
 <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
 </exclusion>
 </exclusions>
</dependency>
<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-annotations</artifactId>
 <version>2.5.4</version>
</dependency>
<dependency>
   <groupId>org.glassfish.jersey.media</groupId>
   <artifactId>jersey-media-multipart</artifactId>
   <version>2.23.2</version>
</dependency>

<dependency>
   <groupId>org.jvnet</groupId>
   <artifactId>mimepull</artifactId>
   <version>1.6</version>

</dependency>

Jersey 1.18.3 Web.xml configuration 

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>
      com.sun.jersey.spi.spring.container.servlet.SpringServlet
    </servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.test.rest</param-value>
    </init-param>
    <init-param>
      <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

  <listener>
    <listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
  </listener>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath:applicationContext.xml
</param-value>
  </context-param>

 <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/myAppName</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

</web-app>

Jersey 2.23.2 Web.xml configuration 

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.jsg.resource.initializer.RestResourceInitializer</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping> '
     
       <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
      <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/myAppName</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>
</web-app>

RestResourceIntializer.java

package com.jsg.resource.initializer;

import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;

public class RestResourceInitializer extends Application {

/**
* Gets the classes.
*
* @return the classes
*/
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
 
// Resources
classes.add(org.glassfish.jersey.jackson.JacksonFeature.class);
classes.add(org.glassfish.jersey.server.spring.scope.RequestContextFilter.class);
classes.add(org.glassfish.jersey.media.multipart.MultiPartFeature.class);

               //Rest classes within Application.
                classes.add(com.jsg.rest.AbcRestService.class);

classes.add(com.jsg.rest.CdeRestService.class);
return classes;
}

}

Now if we would try to deploy this code with Jersey 2 Changes on Websphere(tried on 8.8.5),we will get following exception :

Caused by: java.lang.NoSuchMethodError: javax/ws/rs/core/Application.getProperties()Ljava/util/Map; at org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:287) at org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:311)

Reason for above exception is that,Websphere supports JAX-RS 1 implementation,however we are deploying Jersey 2 code which is Jax-rs 2 implementation.

How to resolve above exception 

So basically what we have to do is to force WebSphere to pick our Jersey 2 jars instead of default Jax-rs 1.We need to follow following steps for that 

1) Disable in built JAX-RS by setting following JVM property to true

    com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true

   This property can be set through admin console of WebSphere by going to Servers->All Server ->  <ServerName> ->Server Infrastructure -> Java and Process Management ->Process Deifinition ->Additional Properties-> Java Virtual Machine ->Additional Properties-> Custom Properties




2) Create Isolated Shared Library having the Jersey 2 Jars and Spring 4 Jars
    Isolated shared library can be created through admin Console of Websphere by going to 
    Environment-> Shared Libraries ->New

    


   In the classpath box,we need to enter path of the folder on the server,where we have placed all        Jersey 2 and Spring 4 Jars

/var/was/server2/jerseyLib1/spring-context-4.3.4.RELEASE.jar
/var/was/server2/jerseyLib1/spring-core-4.3.4.RELEASE.jar
/var/was/server2/jerseyLib1/spring-beans-4.3.4.RELEASE.jar
/var/was/server2/jerseyLib1/spring-aop-4.3.4.RELEASE.jar
/var/was/server2/jerseyLib1/spring-web-4.3.4.RELEASE.jar
/var/was/server2/jerseyLib1/spring-expression-4.3.4.RELEASE.jar
/var/was/server2/jerseyLib1/spring-bridge-2.5.0-b05.jar
/var/was/server2/jerseyLib1/hk2-locator-2.5.0-b05.jar
/var/was/server2/jerseyLib1/hk2-api-2.5.0-b05.jar
/var/was/server2/jerseyLib1/hk2-utils-2.5.0-b05.jar
/var/was/server2/jerseyLib/javax.inject-2.5.0-b05.jar
/var/was/server2/jerseyLib1/javax.annotation-api-1.2-b03.jar
/var/was/server2/jerseyLib1/javax.ws.rs-api-2.0.1.jar
/var/was/server2/jerseyLib1/jersey-client-2.23.2.jar
/var/was/server2/jerseyLib1/jersey-spring3-2.23.2.jar
/var/was/server2/jerseyLib1/jersey-container-servlet-core-2.23.2.jar
/var/was/server2/jerseyLib1/jersey-server-2.23.2.jar
/var/was/server2/jerseyLib1/jersey-common-2.23.2.jar

/var/was/server2/jerseyLib1/jersey-guava-2.23.2.jar


Also in class loading section ,select "use an isolated class loader for this shared library"

and then finally click on Apply and Ok and we are done with creation of isolated shared library.



3. Bind this isolated shared library with your application war file as follows in admin Console

  a)  Application -> All Applications -> Click on your application name

 


  b) Go to References -> Shared Library References -> Reference Shared Libraries ->select your application war(Not ear) and click ok.


  c) Select the library that we created in Step 2 in "Available" combo box on left side and put it on right side in "Selected" combo box and click ok.



With this we have associated the isolated shared library with application war file.

4. Restart Server and application should be up and running.

Thanks for reading.Please let me know,if you have any comments,feedback or query or suggestion on this post.