Написание Веб сервиса - серверной и клиентской части будет состоять из 20 простых шагов. Но для начала необходимо выполнить кое - какую предварительную работу.
Первым делом устанавливаем Web Container, например: Tomcat6.
В переменных окружения создаём: CATALINA_HOME и TOMCAT_HOME, в обеих указываем пути к установленному каталогу.
Устанавливаем JWSDP (Java Web Service Developer Pack) и создаём переменную окружения: JWSDP_HOME.
Замечание! при написании web сервиса использовалось: jdk 1.5, tomcat 6.0, jwsdp 2.0 и дополнительно были обновлены библиотеки: saaj до версии 1.3 ( saaj.dev.java.net) при других версиях программ могут возникать ошибки работы ( о которых вы можете написать в коментариях).
Создаём приложение
В данном примере не будут использоватся никакие среды разработки (IDE), поетому создаём в нашей рабочей папке следующие кататлоги:
WS
- build
- config
- dist
- doc
- src
- web
Написание Серверной части
1. Создаём интерфейс веб сервиса, где объявляем методы, к которым может обращатся клиент
// сохраняем в src/server/wstest.java
package server;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.lang.*;
public interface wstest extends Remote {
public String getEchoString(String strv) throws RemoteException;
public int getEchoInt(int intv) throws RemoteException;
public int add (int i, int j) throws RemoteException;
public double divide (int i, int j) throws RemoteException;
}
2. Создаём класс где реализуем методы, описанные в интерфейсе
// сохраняем в src/server/wstestImpl.java
package server;
import java.lang.*;
public class wstestImpl implements wstest {
public String getEchoString(String strv) {
return strv;
}
public int getEchoInt(int intv) {
return intv;
}
public int add (int i, int j) {
return i+j;
}
public double divide (int i, int j) {
return (double)i/(double)j;
} public static void main (String[] args){
wstestImpl wstest = new wstestImpl();
System.out.println(" 5+2 = "+wstest.add(5,2));
System.out.println (" 5/2 = "+wstest.divide(5,2));
}
}
3. Создаём конфигурационный файл веб сервиса
<?xml version="1.0" encoding="UTF-8"?>
<!-- configuration file for JWSDP wsdeploy tool -->
<webServices xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd" version="1.0" targetNamespaceBase="http://peteryeung.homeip.net/targetNamespaceBase/operation/message " typeNamespaceBase="http://peteryeung.homeip.net/typeNamespaceBase/type "> <!-- the endpoint name becomes the service name in the WSDL --> <endpoint name="wstestService" interface="server.wstest" implementation="server.wstestImpl"/> <endpointMapping endpointName="wstestService" urlPattern="/wstestService"/> </webServices>
сохраняем в : config/ jaxrpc-ri.xml
4. Создаем web.xml файл
<?xml version="1.0" encoding="UTF-8"?>
<web-app> <display-name>SimpleWebService</display-name> <description>First web service by me</description> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>
сохраняем в config/web.xml
5. Копируем библиотеки в каталог библиотек Tomcat (CATALINA_HOME\Lib) :
%JWSDP_HOME%\jaxrpc\lib
%JWSDP_HOME%\saaj\lib
%JWSDP_HOME%\jwsdp-shared\lib
%JWSDP_HOME%\jaxp\lib\endorsed
%JWSDP_HOME%\sjsxp\lib\
%JWSDP_HOME%\fastinfoset\lib\
Для пунктов 6 - 10 были созданы отдельные bat файлы, которые по очереди запускались
6. Компилируем исходники серверной части
javac -d build src/server/*.java
7. Создаём правильную структуру WAR архива
md web\WEB-INF
md web\WEB-INF\classes
xcopy/S build\server\* web\WEB-INF\classes\server\
copy config\jaxrpc-ri.xml web/WEB-INF
copy config\web.xml web/WEB-INF
8. Создаём WAR файл
jar -cvf build/myWEB-INF.war -C web\ .
9. Переделываем WAR архив специально для Web сервиса
md dist
md build\tmpdir
%JWSDP_HOME%\jaxrpc\bin\wsdeploy.bat -verbose -o dist/myWStest.war build/myWEB-INF.war
10. Загружаем на Tomcat
copy dist\myWStest.war %TOMCAT_HOME%\webapps
11. Перезагружаем Tomcat
12. Проверяем wsdl файл
http://localhost:8080/myWStest/wstestService?WSDL
Если всё ранее выполнено правильно , то откроется настроечный XML файл.
Создание клиенсткой части
13. Определяем для клиента, где находится сервис ( WSDL )
config/wscompile_config.xml
<?xml version="1.0"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<!-- WSDL URL and generated package name --> <wsdl location=" http://localhost:8080/myWStest/wstestService?WSDL" packageName="clientStub"></wsdl> </configuration>
14. Генерируем код заглушки (stub code)
%JWSDP_HOME%\jaxrpc\bin\wscompile -d build -gen:client -keep config/wscompile_config.xml
15. Генерируем документацию (java docs)
javadoc -d doc\clientStub build\clientStub\*.java
16. Создаём Jar
md lib jar -cvf lib/wsstub.jar -C build clientStub/
17. Создаём тестовое клиент приложение
// сохраняем в src/client/wstestclient.java
import clientStub.*;
public class wstestclient {
public static void main (String[] args)
{
WstestService wstestService = new WstestService_Impl();
Wstest wstest=null; try { wstest = wstestService.getWstestPort();
} catch(javax.xml.rpc.ServiceException e) { e.printStackTrace(System.err);
} // Invoke the webservices
try {
System.out.println(" wstest.getEchoInt(1) -> "+wstest.getEchoInt(1));
System.out.println(" wstest।getEchoString(\"test\")->"+wstest.getEchoString("test"));
System.out.println(" 5+2 = "+wstest.add(5,2)); System.out.println(" 5/2 = "+wstest.divide(5,2));
} catch (java.rmi.RemoteException e) {
e.printStackTrace (System.err);
}
}
}
18. Компилируем тестовый пример
javac -g -d build -classpath lib/wsstub.jar;
%JWSDP_HOME%\jaxrpc\lib\jaxrpc-api.jar;
%JWSDP_HOME%\jaxrpc\lib\jaxrpc- spi.jar;
%JWSDP_HOME%\jaxrpc\lib\jaxrpc-impl.jar;
src/client/*.java
19. Запускаем клиент
java -cp lib/wsstub.jar;
%JWSDP_HOME%\jaxrpc\lib\jaxrpc-api.jar;
%JWSDP_HOME%\jaxrpc\lib\jaxrpc- spi.jar;
%JWSDP_HOME%\jaxrpc\lib\jaxrpc-impl.jar;
%JWSDP_HOME%\jwsdp-shared\lib\jax-qname.jar; %JWSDP_HOME%\jwsdp-shared\lib\activation.jar;
%JWSDP_HOME%\jwsdp-shared\lib\mail.jar;
%JWSDP_HOME%\saaj\lib\saaj- impl.jar; %JWSDP_HOME%\saaj\lib\saaj-api.jar;
%JWSDP_HOME%\jaxp\lib\endorsed\xercesImpl.jar; %JWSDP_HOME%\fastinfoset\lib\FastInfoset.jar;
%JWSDP_HOME%\sjsxp\lib\jsr173_api.jar;
%JWSDP_HOME%\jaxp\lib\endorsed\dom.jar;
build client.wstestclient pause
20. Результат работы появится в консоли
wstest।getEchoInt(1) -> 1
wstest।getEchoString("test") -> test
5+2 = 7
5/2 = 2.5
создание Web сервиса успешно завершено
Комментариев нет:
Отправить комментарий