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