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

Завершающим штрихом будет антовский скрипт для развертывания приложения. Полтый текст можно найти в приложении. Вот его кусочек:

 <datasources>
  < target name="generate-test-jar" >  

   < echo message="Creating jar" / > 

   < !-- 1. create temp dir -- > 
    < mkdir dir="${classes.dir}/temp-jar" / > 

    < !-- 2. copy class files -- > 
    < copy todir="${classes.dir}/temp-jar" > 
     < fileset dir="${build.dir}" includes="**/**/*.*"  / > 
    < /copy >  

  < !-- 4. generate module -- > 
   < antcall target="generate-jar" > 
    < param name="jarfile" value="${classes.dir}/test-ejb.jar"/ > 
    < param name="jarbasedir" value="${classes.dir}/temp-jar"/ > 
    < param name="jarincludes" value="**/**/*.*"/ > 
   < /antcall > 

  < !-- 5. delete temp dir    -- > 
  < delete dir="${classes.dir}/temp-jar" / > 
 < /target > 

Запускаем Ant скрипт и получаем архив приложения test-ejb.jar. Этот файл надо переместить в папку deploy в сервере приложений JBoss 4.2. У меня это находиться здесь: C:\jboss\server\default\deploy.

Если сервер все еще не запущен — запустите его. Теперь загляните сюда: C:\jboss\server\default\tmp\jbossws там должен появиться файл с описанием нашего веб сервиса JBossService****.wsdl

Откройте броузер и наберите http://localhost:8080/JBossServiceService/JBossService?wsdl По этому адресу находится описание вновь созданного сервиса. И не сложно догадаться, что именно его будут использовать клиенты веб сервиса.

Для тестирования байтовых данных используется gif файл. Он находится в корне проекта. Ant скрипт копирует его в корень диска c.

Консольный клиент

Сейчас посмотрим, как можно подключиться и получить полезную информацию от нашего сервиса из консольного приложения.

Создаем новый Java проект: JBossServiceClient. Копируем библиотеки в папку lib:

  • activation.jar
  • javassist.jar
  • jaxb-api.jar
  • jaxb-impl.jar
  • jbossall-client.jar
  • jboss-ejb3x.jar
  • jboss-jaxrpc.jar
  • jboss-jaxws.jar
  • jboss-saaj.jar
  • jbossws-client.jar
  • jboss-xml-binding.jar
  • mail.jar
  • servlet-api.jar
  • stax-api.jar
  • wsdl4j.jar
  • xercesImpl.jar

Дальше нам необходимо на основе файла описания веб сервиса wsdl, сгенерировать client stub нашего консольного приложения. Для этой цели сервер JBoss 4.2 содержит программу wsconsume. Можно использовать и другие средства, например Axis но, как несложно догадаться, формат будет несколько non compatible.

Поэтому откроем командную строку, переместимся в папку C:\jboss\bin и наберем следующую команду:

C:\jboss\bin>wsconsume -k -o c:/output http://localhost:8080/JBossServiceService/JBossService?wsdl

Копируем из папки c:/output все java файлы и подключаем из к проекту в пакет service.ejb.

Создаем файл клиента JBossServiceClient. Он совсем простой.

 package service.client;

 import java.util.Date;
 import service.ejb.JBossService;
 import service.ejb.TestService;
 
 public class JBossServiceClient {
  
  public static void main(String[] args) {
   JBossService service = new JBossService();
   TestService testService = service.getJBossServicePort();
   System.out.println("JBossServiceClient(STIRING):" + testService.testString("Hello there!"));
   System.out.println("JBossServiceClient(BOOLEAN):" + testService.booleanTest(true));
   System.out.println("JBossServiceClient(INTEGER):" + testService.intTest(23, 44));
   System.out.println("JBossServiceClient(BYTE):" + testService.blobTest());
  }
  
 }

Запускаем и получаем ответ от веб сервиса.

JBossServiceClient(STIRING):JBossService result: Hello there! HOME_DIR: C:\jboss
JBossServiceClient(BOOLEAN):false
JBossServiceClient(INTEGER):67
JBossServiceClient(BYTE):[B@89e2f1

Страница: