■IF■ Links
package gunman;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface GunClockIF extends Remote {
public String getGunClock() throws RemoteException;
public void setClockSize(int clockSize) throws RemoteException;
}
■Impl
package gunman;
public class GunClockImpl implements GunClockIF {
private int clockSize = 20;
public String getGunClock(){
GunClockBean gunClockBean = new GunClockBean();
gunClockBean.setClockSize(this.clockSize);
return gunClockBean.getGunClock();
}
public void setClockSize(int clockSize){
this.clockSize = clockSize;
}
}
■config-interface.xml
http://java.sun.com/xml/ns/jax-rpc/ri/config”>
name=”GunClockService”
packageName=”gunman”
targetNamespace=”urn:GunClockTarget”
typeNamespace=”urn:GunClockType”
>
■jaxrpc-ri.xml
xmlns=”http://java.sun.com/xml/ns/jax-rpc/ri/dd”
version=”1.0”
targetNamespaceBase=”urn:GunClockTarget”
typeNamespaceBase=”urn:GunClockType”
urlPatternBase=”/ws”>
name=”GunClock”
displayName=”GunClock Service”
description=”A simple web service”
interface=”gunman.GunClockIF”
implementation=”gunman.GunClockImpl”
model=”/WEB-INF/model.gz”/>
endpointName=”GunClock”
urlPattern=”/GunClockWebService”/>
■web.xml
PUBLIC ”-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
”http://java.sun.com/j2ee/dtds/web-app_2_3.dtd”>
JAX-RPC GunClock Web Application Sample
Sample Application for JAX-RPC using static stubs.
60
■wscompile
%JWSDP_HOME%\jaxrpc\bin\wscompile.bat -define -d WEB-INF/etc -nd WEB-INF/etc -classpath WEB-INF/classes config-interface.xml -model WEB-INF/model.gz
■war (一時的なもの:portable)
jar cvf GunClock-portable.war WEB-INF
WEB-INF/jaxrpc-ri.xml
WEB-INF/web.xml
WEB-INF/model.gz
WEB-INF/classes/
■wsdeploy (jax-rpcのwarを作る)
%JWSDP_HOME%\jaxrpc\bin\wsdeploy -o GunClock-jaxrpc.war GunClock-portable.war
■warをデプロイ
jax-rpc対応のtomcatにデプロイ
webappsにGunClock-jaxrpc.warをおくのみ。
■WSDL取得
http://localhost:8080/GunClock-jaxrpc/GunClockWebService?WSDL
***
【CLIENT(Static)】
■config-wsdl.xml
xmlns=”http://java.sun.com/xml/ns/jax-rpc/ri/config”>
http://localhost:8080/GunClock-jaxrpc/GunClockWebService?WSDL”
packageName=”staticstub”/>
■IF取得
%JWSDP_HOME%\jaxrpc\bin\wscompile -gen:client -d . -classpath . config-wsdl.xml
■Client.java
package gunman;
import staticstub.*;
import javax.xml.rpc.Stub;
public class GunClockClientStatic {
private static String endpointAddress = ”http://localhost:8080/GunClock-jaxrpc/GunClockWebService”;
private static int clockSize = 20;
public static void main(String[] args) {
if(args.length >= 1){ endpointAddress=args[0]; }
if(args.length >= 2){ clockSize = Integer.parseInt(args[1]); }
System.out.println(”Endpoint address = ” + endpointAddress);
try {
Stub stub = (Stub) (new GunClockService_Impl().getGunClockIFPort());
stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,
endpointAddress);
GunClockIF gunClock = (GunClockIF)stub;
gunClock.setClockSize(clockSize);
System.out.println(gunClock.getGunClock());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
■compile
javac -classpath .;lib\jaxrpc-api.jar;lib\jaxrpc-impl.jar gunman\*.java
■run (jarファイルをいろいろかき集める)
set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-api.jar
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-impl.jar
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-spi.jar
set CLASSPATH=%CLASSPATH%;lib\jax-qname.jar
set CLASSPATH=%CLASSPATH%;lib\activation.jar
set CLASSPATH=%CLASSPATH%;lib\mail.jar
set CLASSPATH=%CLASSPATH%;lib\saaj-impl.jar
set CLASSPATH=%CLASSPATH%;lib\saaj-api.jar
set CLASSPATH=%CLASSPATH%;lib\dom.jar
set CLASSPATH=%CLASSPATH%;lib\xercesImpl.jar
set WEBSERVICE=http://localhost:8080/GunClock-jaxrpc/GunClockWebService
java -classpath %CLASSPATH% gunman.GunClockClientStatic %WEBSERVICE%
java -classpath %CLASSPATH% gunman.GunClockClientStatic %WEBSERVICE% 30
java -classpath %CLASSPATH% gunman.GunClockClientStatic
***
【Dynamic】
スタブ生成せずに、ダイナミックに呼び出す方法もある。
GunClockIFだけは、前述の方法であらかじめ取得しておくこと。
■GunClockClientDynamic.java
package gunman;
import java.net.URL;
import javax.xml.rpc.Service;
import javax.xml.rpc.JAXRPCException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceFactory;
import staticstub.GunClockIF;
public class GunClockClientDynamic {
private static int clockSize = 15;
public static void main(String[] args) {
try {
String UrlString = args[0] + ”?WSDL”;
String nameSpaceUri = ”urn:GunClockTarget”;
String serviceName = ”GunClockService”;
String portName = ”GunClockIFPort”;
System.out.println(”UrlString = ” + UrlString);
URL gunClockWsdlUrl = new URL(UrlString);
ServiceFactory serviceFactory =
ServiceFactory.newInstance();
Service gunClockService =
serviceFactory.createService(gunClockWsdlUrl,
new QName(nameSpaceUri, serviceName));
GunClockIF myProxy =
(GunClockIF)
gunClockService.getPort(
new QName(nameSpaceUri, portName),
GunClockIF.class);
myProxy.setClockSize(clockSize);
System.out.println(myProxy.getGunClock());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
■compile
set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-api.jar
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-impl.jar
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-spi.jar
set CLASSPATH=%CLASSPATH%;lib\jax-qname.jar
set CLASSPATH=%CLASSPATH%;lib\activation.jar
set CLASSPATH=%CLASSPATH%;lib\mail.jar
set CLASSPATH=%CLASSPATH%;lib\saaj-impl.jar
set CLASSPATH=%CLASSPATH%;lib\saaj-api.jar
set CLASSPATH=%CLASSPATH%;lib\dom.jar
set CLASSPATH=%CLASSPATH%;lib\xercesImpl.jar
javac -classpath %CLASSPATH% gunman\GunClockClientDynamic.java
■run
set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-api.jar
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-impl.jar
set CLASSPATH=%CLASSPATH%;lib\jaxrpc-spi.jar
set CLASSPATH=%CLASSPATH%;lib\jax-qname.jar
set CLASSPATH=%CLASSPATH%;lib\activation.jar
set CLASSPATH=%CLASSPATH%;lib\mail.jar
set CLASSPATH=%CLASSPATH%;lib\saaj-impl.jar
set CLASSPATH=%CLASSPATH%;lib\saaj-api.jar
set CLASSPATH=%CLASSPATH%;lib\dom.jar
set CLASSPATH=%CLASSPATH%;lib\xercesImpl.jar
set WEBSERVICE=http://localhost:8080/GunClock-jaxrpc/GunClockWebService
java -classpath %CLASSPATH% gunman.GunClockClientStatic %WEBSERVICE%