В общем то нет проблем:Используем: Weblogic8.1, apache-ant-1.6.5
Делаем проект с такой структурой:
WebServProject
|_src
| |_my_service
| |_Hellow.java
|
|_build.xml
Далее код класса Hellow.java
package my_service;
public class Hellow {
public String sayHellow(String inputStr, int inputInt) {
System.out.println("sayHello in webservices.basic.javaclass webservice has " + "been invoked with arguments " + inputStr + " and " + inputInt);
return "This message brought to you by the " + "letter " + inputStr + " and the number " + inputInt;
}
}
Теперь самое главное файл buil.xml
<project name="sample web service" default="all" basedir=".">
<property name="wlLibHome" value="C:/bea/weblogic81/server/lib"/>
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<path id="project.class.path">
<pathelement location="${wlLibHome}/weblogic.jar"/>
<pathelement location="${wlLibHome}/webservices.jar"/>
</path>
<path id="new.project.class.path">
<path refid="project.class.path"/>
<pathelement location="lib/temp.jar"/>
</path>
<taskdef name="servicegen"
classname="weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask"
classpathref="project.class.path"/>
<taskdef name="clientgen"
classname="weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask"
classpathref="project.class.path"/>
<target name="Generate.Service" depends="build">
<servicegen
destEar="ears/myWebService.ear"
contextURI="my_services" >
<classpath refid="new.project.class.path"/>
<service
expandMethods="true" generateTypes="true"
javaClassComponents="my_service.Hellow"
protocol="http" serviceName="HellowWS" serviceURI="/service/Hello"
style="rpc" targetNamespace="my_service">
</service>
</servicegen>
</target>
<target name="Generate.Client" depends="build">
<clientgen ear="ears/myWebService.ear"
packageName="my_service.generated"
clientJar="lib/clientWebService.jar"
serviceName="HellowWS" overwrite="true">
<classpath refid="new.project.class.path"/>
</clientgen>
</target>
<target name="build">
<echo>build RUNS</echo>
<delete dir="${dest}"/>
<mkdir dir="${dest}"/>
<javac destdir="${dest}">
<src path="${src}/my_service"/>
</javac>
<delete dir="lib"/>
<mkdir dir="lib"/>
<jar destfile="lib/temp.jar" duplicate="preserve">
<zipfileset dir="classes" prefix=""/>
</jar>
</target>
<target name="all" depends="Generate.Service, Generate.Client"/>
</project>
Запускаем задачу "all"
В процессе её выполнения компилируется наш класс Hellow + создается временный jar-файл с этим классом.
Далее выполняется задача Generate.Service. Временный jar-файл создавался для того чтобы подложить его в classpath для этой задачи.
После отработки задачи Generate.Service Будет создан ear-архив: ears/myWebService.ear. Внутри которого будет war-архив - web-services.war.
Далее запустится задача Generate.Client. Результатом её работы будет jar-архив(библиотека для работы с нашим web-сервисом) - lib/clientWebService.jar
Теперь запускаем weblogic и деплоим либо ear-архив либо war-архив. - это мы задеплоили наш вебсервис. Осталось написать клиента:
задаем файл: src/my_client/Client.java
Для работы с нашим вебсервисом необходимо будет подключить в classpath библиотеку - lib/clientWebService.jar (кот создана на этапе сборки антом)
Вот код:
package my_client;
import my_service.generated.*;
import javax.xml.rpc.Stub;
public class Client {
public static void main(String [] args) throws Exception{
HellowWS_Impl ws = new HellowWS_Impl();
HellowWSPort port = ws.getHellowWSPort();
Stub stub = (Stub)port;
/**
* По умолчанию след. свойство равно: "http://localhost:7001/my_services/service/Hello" (см. файл HellowWS.wsdl в clientWebService.jar)
* Но у меня север weblogic, на котором вебсервис работает на 7101 порту, поэтому делаю так:
*/
stub._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:7101/my_services/service/Hello");
String responce = port.sayHellow("privet", 666);
System.out.println("Web service answered:");
System.out.println(responce);
}
}
Теперь досточно в этом коде изменить Stub.ENDPOINT_ADDRESS_PROPERTY на нужный и все - можно запускать!
ЗЫЖ
Если не считать строк в которых java-код и xml-файл, то описание как раз займет не больше 20 строк.
ЗЗЫЖ
http://e-docs.bea.com/wls/docs81/webserv/anttasks.html#1080160