Jax WS document style example


Click here to download eclipse supported ZIP file



This is input.properties properties file and these properties are used in the application.




portNumber=9090



This is InitServlet.java file having the source code to execute business logic.



 

    
package com.cv.servlet.init;



import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



import org.apache.log4j.Logger;



/**

 * Servlet implementation class InitServlet

 

 @author Chandra Vardhan

 *

 */



public class InitServlet extends HttpServlet {



  private static final Logger LOGGER = Logger.getLogger(InitServlet.class);



  private static final long serialVersionUID = 1L;



  /**

   @see HttpServlet#HttpServlet()

   */

  public InitServlet() {

    super();



  }



  /**

   @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

   *      response)

   */

  public void doGet(HttpServletRequest request, HttpServletResponse response)

      throws ServletException, IOException {

    LOGGER.info("Entered into doGet(--) of InitServlet class... ");



    response.setContentType("text/html");



    String contextPath = this.getClass().getClassLoader().getResource("/").getPath();

  

    if(contextPath != null) {

      contextPath = contextPath.substring(0, contextPath.lastIndexOf(".metadata")-1);

      if(contextPath.startsWith("\\")) {

        contextPath = contextPath.substring(1, contextPath.length());

      }

      contextPath = contextPath+request.getContextPath();

    }

    

    File file = new File(contextPath+"//input.properties");

    if (file != null && !file.exists()) {

      file.createNewFile();

    }

    LOGGER.info("created at :: "+file.getAbsolutePath());

    final PrintWriter pw = new PrintWriter(new FileOutputStream(file));

    pw.print("portNumber=" + request.getServerPort());

    PrintWriter out = response.getWriter();

    out.print("Successfully deployed...");

    pw.close();

    out.close();

  }



  /**

   @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

   *      response)

   */

  protected void doPost(HttpServletRequest request,

      HttpServletResponse responsethrows ServletException, IOException {

    LOGGER.info("Entered into doPost(--) of InitServlet class... ");

    doGet(request, response);

  }



}


This is HelloWorld.java file having the source code to execute business logic.



 

    
package com.cv.webservice.doc;



import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

import javax.jws.soap.SOAPBinding.Style;



/**

 @author Chandra Vardhan

 *

 */

//Service Endpoint Interface  

@WebService

@SOAPBinding(style = Style.DOCUMENT)

public interface HelloWorld {

  @WebMethod

  String getHelloWorldAsString(String name);

}


This is HelloWorldClient.java file having the source code to execute business logic.



 

    
package com.cv.webservice.doc;



import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.net.URL;

import java.util.Properties;

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

import org.apache.log4j.Logger;





/**

 @author Chandra Vardhan

 *

 */

public class HelloWorldClient {

  

  private static final Logger LOGGER = Logger.getLogger(HelloWorldClient.class);

  private static String WS_URL = "/JaxWSDocumentStyle/hello2?wsdl";



  static {

    Properties properties = readFile();

    setValues(properties);

  }

  private static void setValues(Properties properties) {



    if (properties != null) {

      String port = properties.getProperty("portNumber");

      WS_URL = "http://localhost:" + port + WS_URL;

    }

  }



  private static Properties readFile() {



    File file = new File(System.getProperty("user.dir")

        "/input.properties");

    Properties prop = new Properties();

    if (file != null && file.exists()) {

      InputStream input = null;

      try {

        input = new FileInputStream(file);

        // load a properties file

        prop.load(input);

      catch (Exception e) {

        e.printStackTrace();

      }

    else {

      prop.setProperty("portNumber""8080");

    }

    return prop;

  }

  public static void main(String[] argsthrows Exception {

    URL url = new URL(WS_URL);

    LOGGER.info("Server is URL is : : " + WS_URL);

    // 1st argument service URI, refer to wsdl document above

    // 2nd argument is service name, refer to wsdl document above

    QName qname = new QName("http://doc.webservice.cv.com/",

        "HelloWorldImplService");

    Service service = Service.create(url, qname);

    HelloWorld hello = service.getPort(HelloWorld.class);

    System.out.println(hello.getHelloWorldAsString("Document example..."));

  }

}


This is HelloWorldImpl.java file having the source code to execute business logic.



 

    
package com.cv.webservice.doc;

import javax.jws.WebService;  



/**

 @author Chandra Vardhan

 *

 */

//Service Implementation  

@WebService(endpointInterface = "com.cv.webservice.doc.HelloWorld")  

public class HelloWorldImpl implements HelloWorld{  

    @Override  

    public String getHelloWorldAsString(String name) {  

        return "Hello World JAX-WS " + name;  

    }  

}  
    
   


This is HelloWorldPublisher.java file having the source code to execute business logic.



 

    
package com.cv.webservice.doc;



import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.Properties;



import javax.xml.ws.Endpoint;

import org.apache.log4j.Logger;



/**

 @author Chandra Vardhan

 *

 */

//Endpoint publisher  

public class HelloWorldPublisher {

  private static final Logger LOGGER = Logger.getLogger(HelloWorldPublisher.class);

  private static String WS_URL = "/JaxWSDocumentStyle/hello2";



  static {

    Properties properties = readFile();

    setValues(properties);

  }



  public static void main(String[] args) {



    Endpoint.publish(WS_URL, new HelloWorldImpl());

    LOGGER.info("Server is URL is : : " + WS_URL);

    LOGGER.info("Server is published!");



  }



  private static void setValues(Properties properties) {



    if (properties != null) {

      String port = properties.getProperty("portNumber");      

      WS_URL = "http://localhost:" + port + WS_URL;

    }

  }



  private static Properties readFile() {



    File file = new File(System.getProperty("user.dir")

        "/input.properties");

    Properties prop = new Properties();

    if (file != null && file.exists()) {

      InputStream input = null;

      try {

        input = new FileInputStream(file);

        // load a properties file

        prop.load(input);

      catch (Exception e) {

        e.printStackTrace();

      }

    else {

      prop.setProperty("portNumber""8080");

    }

    return prop;

  }

}


This is pom.xml file having the entries of dependency jars and information to build the application .



 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.cv.webservice.doc</groupId>
 <artifactId>JaxWSDocumentStyle</artifactId>
 <version>1.0</version>
 <packaging>war</packaging>

 <dependencies>
  <dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.16</version>
  </dependency>

  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
  </dependency>
  
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.0.1</version>
  </dependency>

 </dependencies>

 <build>
  src
  <plugins>
   <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
     <source>1.8</source>
     <target>1.8</target>
    </configuration>
   </plugin>
   <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
     <warSourceDirectory>WebContent</warSourceDirectory>
     <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
   </plugin>
  </plugins>
 </build>
</project>


This is web.xml deployment descriptor file and it describes how the web application should be deployed.



 
<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
   http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 version="3.1">

  <servlet>
  <servlet-name>initServlet</servlet-name>
  <servlet-class>com.cv.servlet.init.InitServlet</servlet-class>
  
 </servlet>
 <servlet-mapping>
  <servlet-name>initServlet</servlet-name>
  <url-pattern>/initServlet</url-pattern>
 </servlet-mapping>

   <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>


This is log4j.properties file having the entries for logging the information into the console/file.




#By default enabling Console appender
# Root logger option
log4j.rootLogger=INFO, stdout

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p [%c]:%L -->> %m%n

# Redirect log messages to a log file
#log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.File=C:\servlet-application.log
#log4j.appender.file.MaxFileSize=5MB
#log4j.appender.file.MaxBackupIndex=10
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

No comments:

Post a Comment