- Статьи и примеры
- | Веб сервисы
- | Про то как сделать веб сервис на сервере приложений jboss 4.2
- | Про то как сделать веб сервис на сервере приложений jboss 4.2 страница 3
Про то как сделать веб сервис на сервере приложений 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
