Про то как сделать веб сервис на сервере приложений JBoss 4.2 Страница 3

Сервлет — клиент веб сервиса

Последний на сегодня пример.

Сервлет для получения байтовых данных, в нашем случае картинки.

Создаем новый Java проект: JBossServiceClientServlet. Библиотеки и сгенерированные файлы web service client stub копируем из предыдущего проекта.

Пишем файл сервлета JBossServiceClientServlet:

 package service.client.servlet;

 import java.io.IOException;
 import javax.servlet.ServletException;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import service.ejb.JBossService;
 import service.ejb.TestService;

 public class JBossServiceClientServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

  private static final long serialVersionUID = 1L;

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   ServletOutputStream out = response.getOutputStream();
   response.setContentType("image/jpeg");
   JBossService service = new JBossService();
   TestService testService = service.getJBossServicePort();
   byte[] image = testService.blobTest();
   out.write(image);
   out.close();
  } 
  
 }

Добавляем папку WEB-INF с файлом описания web.xml

 <web-app id="web-app_1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
 
  <display-name>JBossServiceClientServlet</display-name> 
  <servlet> 
  	<description>Test application</description> 
   	<display-name>JBossServiceClientServlet</display-name> 
   	<servlet-name>JBossServiceClientServlet</servlet-name> 
   	<servlet-class>service.client.servlet.JBossServiceClientServlet</servlet-class> 
  </servlet>
   
  <servlet-mapping> 
   <servlet-name>JBossServiceClientServlet</servlet-name> 
   <url-pattern>/JBossServiceClientServlet</url-pattern> 
  </servlet-mapping> 
  
 </web-app> 

И на конец вот такой Ant скрипт для развертывания веб приложения. Самый важный кусочек:

 <target name="generate-test-war"> 
 
  <echo message="Creating war" /> 
  
  <!-- 1. create temp dir --> 
  <mkdir dir="${classes.dir}/temp-war" /> 
  
  <!-- 2. copy class files --> 
  <copy todir="${classes.dir}/temp-war/WEB-INF/classes"> 
   <fileset dir="${build.dir}" includes="**/**/*.class" />       
  </copy>  
   
  <!-- 3. copy web.xml --> 
  <copy todir="${classes.dir}/temp-war/WEB-INF"> 
   <fileset dir="WEB-INF" includes="**/*.xml"/> 
  </copy>  
  
  <!-- 4. generate module --> 
  <antcall target="generate-jar"> 
   <param name="jarfile" value="${classes.dir}/test-web.war"/> 
   <param name="jarbasedir" value="${classes.dir}/temp-war"/> 
   <param name="jarincludes" value="**/*.*"/> 
  </antcall>  
  
  <!-- 5. delete temp dir    
  <delete dir="${classes.dir}/temp-war" />  --> 
  
 </target> 

Для того чтобы проверить содержимое WAR архива, закомментируйте 5 пункт. После того, как скрипт отработает Вы сможете легко проконтролировать файлы, попавшие в архив. Но если Вы так сделали то удаляйте вручную эту папку перед следующим запуском скрипта.

Как говориться в таких случаях, если Вы все сделали правильно, то наберите в броузере http://localhost:8080/test-web/JBossServiceClientServlet и вы получите картинку.
Если картинки не появилось — значит Вы не все сделали правильно. Это очевидно.

Файлы, используемые в статье

Страница:

Александр Смелков
Санкт-Петербург Лето 2007