Axis開発webserviceの簡単な例
11832 ワード
blog移行先:
http://www.micmiu.com
本稿は主にAxis開発webserviceの簡単な例の詳細なプロセスとステップを記録する.
Axis公式サイト:
http://ws.apache.org/axis/
最新の1.4のカバンは公式サイトでダウンロードできます.
axis-bin-1_4.zip
解凍後の
axis-1_4\webapps\下のaxisディレクトリは%TOMCATまでテストしました.HOME%/Webapps/カタログ下
tomcatを起動してブラウザに入力します.
http://localhost:8082/axis下図のように見えます(ps:本人のtomcatポートは8082です)
上の図のをクリックしてください
Validatoainリンクは、ページ上ですでにあるカバンと足りないカバンの情報を提示します.ヒントによって必要なカバンを全部ダウンロードして、これらの種類のカバンをコピーします.
%tomcathome%/webapps/axis/WEB-INF/lib/ディレクトリの下でtomcatを再起動して、ValidationページではErrとWarningのメッセージが見えなくなるまで.
ヒントが足りない場合
xmlsec.jarに行けます
http://santuario.apache.org/dist/java-library/ダウンロード
Axisは三つのウェブserviceをサポートするクライアントアクセス方式で、それぞれ: Dynamic Invocation Interface(DII) Dynamic Proxy方式 Stubs方式 PS:多くの資料を見て、上記の方式をWeb Servcieの3つの「配置と開発方法は、個人的には妥当ではないと思います.
axisの展開とweb serviceを発表する方法を紹介します.
一、JWS
JWS(Java Web Service)は、最も簡単な方法です.Axisは、通常のJava類のソースファイルの拡張子を.jwsに変更し、簡単なcopyをAXIS uHOMEに変更することができます.このようにAxisは自動的にコンパイルします.jwsファイルは、自動的にJava Web Servieのサービスに追加されます.具体的なプロセスは以下の通りです.
1.Eclipseまたはテキストエディタでjava類SayHello.java(
この類にはパッケージ名が含まれていません)
このディレクトリに来たクラスではなく、名前を変更します.
SayHello.jws
3.ブラウザの入力を開く:http://localhost:8082/axis/SayHello.jws 見えます
上の図Click to see the WSDLのリンクをクリックすると、生成したwsdlが見られます.
4.クライアント
Dynamic Invocation Interface(DII)方式は以下のように実現されています.
Dynamic Proxy方式は以下の通り実現される.
1.カスタムパラメータbeanとserverのコードは以下の通りです.
WSDDファイルの説明は参照できます.
http://www.oio.de/axis-wsdd/
%tomcat%/axis/WEB-INF/class/ディレクトリの下で、完全なディレクトリ構造をコピーして、二つのwsddファイルをコピーします.
%tomcats%/axis/WEB-INF/ディレクトリの下で、コンソールを開けて%tomcatHome%/axis/WEB-INF/ディレクトリの下に入ります.
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint-p 8082 deploy.wdd
-sパラメータはAxisServletがあるアプリケーションパスを指定しています.
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint-p 8082-s/axis/servlet/AxisServlet deploy.wdd
-lパラメータ指定先アプリケーションのURL
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint–lhttp://localhost:8082/axis/services/MessageService deploy.wsdd
このコマンドはこのサービスをリリースします.成功したらコンソールの下でヒントがあります.
Processing file deploy.wsdd
<Admin>Dune processing
同時に発表した後に%tomcathome%/axis/目次の下でできて、もう一つのserver-config.wddファイルがあります.
ブラウザに入力:http://localhost:8082/axis/services/MessageService下の図が見えます
5.clientの生成方法:
コンソールを開いて入る
%tomcat%/axis/WEB-INF/ディレクトリの下:
>java-Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL 2 Java-p clienthttp://localhost:8082/axis/services/MessageService?wsdl
現在のディレクトリの下でclientフォルダを作成します.このディレクトリのファイルはクライアントのソースです.
6.WSDDファイルを通じてリリースされたwebserviceをアンインストールする:
コンソールを開いて入る
%tomcat%/axis/WEB-INF/ディレクトリの下:
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint undeploy.wdd
デフォルト8080ポートでない場合はパラメータ-pを追加する必要があります.
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint-p 8082 undeploy.wdd
PS:java-Djava.ext.dirs=libもjava-cp"lib\*"を使うことができます.
7.クライアントのStubs方式は以下の通り実現される.
http://www.micmiu.com
本稿は主にAxis開発webserviceの簡単な例の詳細なプロセスとステップを記録する.
Axis公式サイト:
http://ws.apache.org/axis/
最新の1.4のカバンは公式サイトでダウンロードできます.
axis-bin-1_4.zip
解凍後の
axis-1_4\webapps\下のaxisディレクトリは%TOMCATまでテストしました.HOME%/Webapps/カタログ下
tomcatを起動してブラウザに入力します.
http://localhost:8082/axis下図のように見えます(ps:本人のtomcatポートは8082です)
上の図のをクリックしてください
Validatoainリンクは、ページ上ですでにあるカバンと足りないカバンの情報を提示します.ヒントによって必要なカバンを全部ダウンロードして、これらの種類のカバンをコピーします.
%tomcathome%/webapps/axis/WEB-INF/lib/ディレクトリの下でtomcatを再起動して、ValidationページではErrとWarningのメッセージが見えなくなるまで.
ヒントが足りない場合
xmlsec.jarに行けます
http://santuario.apache.org/dist/java-library/ダウンロード
Axisは三つのウェブserviceをサポートするクライアントアクセス方式で、それぞれ:
axisの展開とweb serviceを発表する方法を紹介します.
一、JWS
JWS(Java Web Service)は、最も簡単な方法です.Axisは、通常のJava類のソースファイルの拡張子を.jwsに変更し、簡単なcopyをAXIS uHOMEに変更することができます.このようにAxisは自動的にコンパイルします.jwsファイルは、自動的にJava Web Servieのサービスに追加されます.具体的なプロセスは以下の通りです.
1.Eclipseまたはテキストエディタでjava類SayHello.java(
この類にはパッケージ名が含まれていません)
public class SayHello{
public String sayMsg(String name){
return "Hello,"+name;
}
}
2.上のクラス(SayHello.java)のcopyを%tomcathomes/webapps/axis/カタログの下に、クラスのソースファイルだけが必要です.このディレクトリに来たクラスではなく、名前を変更します.
SayHello.jws
3.ブラウザの入力を開く:http://localhost:8082/axis/SayHello.jws 見えます
上の図Click to see the WSDLのリンクをクリックすると、生成したwsdlが見られます.
4.クライアント
Dynamic Invocation Interface(DII)方式は以下のように実現されています.
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
* axis client
* @author Michael sun
*/
public class TestClient {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String wsdlUrl = "http://localhost:8082/axis/SayHello.jws";
// String wsdlUrl=”http://localhost:8080/axis/SayHello.jws?wsdl”
Service s = new Service();
Call call = (Call) s.createCall();
call.setOperationName("sayMsg");//
call.setTargetEndpointAddress(wsdlUrl);// wsdl
String val = (String) call.invoke(new Object[] { "My Michael Sun" });
System.out.println(" webservice :" + val);
}
}
5.クライアントDynamic Proxy方式は以下の通り実現される.
public interface SayHelloInterface extends java.rmi.Remote {
public String sayMsg(String name) throws java.rmi.RemoteException;
}
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
/**
* test Dynamic Proxy client
* @author Michael sun
*/
public class TestProxyClient {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String wsdlname = "http://localhost:8088/axis/SayHello.jws?wsdl";
//
String namespaceUrl = "http://localhost:8088/axis/SayHello.jws";
//
String serviceName = "SayHelloService";
//
String portName = "SayHello";
//
ServiceFactory service = ServiceFactory.newInstance();
//
Service s = service.createService(new URL(wsdlname), new QName(
namespaceUrl, serviceName));
SayHelloInterface proxy = (SayHelloInterface) s.getPort(new QName(
namespaceUrl, portName), SayHelloInterface.class);
System.out.println(proxy.sayMsg("Blue boy!"));
}
}
二、WSDD(Web Service Deployment Descriptor)ファイルリリースWeb Service1.カスタムパラメータbeanとserverのコードは以下の通りです.
package wsaxis.bean;
/**
* bean
* @author Michael sun
*/
public class UserBean {
private String userName;
private Integer age;
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @return the age
*/
public Integer getAge() {
return age;
}
/**
* @param pUserName the userName to set
*/
public void setUserName(String pUserName) {
userName = pUserName;
}
/**
* @param pAge the age to set
*/
public void setAge(Integer pAge) {
age = pAge;
}
}
package wsaxis;
import wsaxis.bean.UserBean;
/**
* axis server
* @author Michael sun
*/
public class MessageService {
/**
* getBeanStr
* @param bean
* @return String
*/
public String getBeanStr(UserBean bean) {
return "You Name:" + bean.getUserName() + " , You Age:" + bean.getAge();
}
/**
* checkUser
* @param bean
* @return String
*/
public String checkUser(UserBean bean) {
if ("Michael".equals(bean.getUserName())) {
return "Michael welcome to axis ";
} else {
return bean.getUserName() + " can't access this ws";
}
}
}
2.deploy.wsddとundeploy.wddファイルの作成は以下の通りである.WSDDファイルの説明は参照できます.
http://www.oio.de/axis-wsdd/
<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="MessageService" provider="java:RPC" style="rpc" use="encoded">
<parameter name="className" value="wsaxis.MessageService"/>
<parameter name="allowedMethods" value="*"/>
<typeMapping xmlns:ns1="http://wsaxis.michael.com" qname="ns1:userBean"
type="java:wsaxis.bean.UserBean"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
</service>
</deployment>
<undeployment
xmlns="http://xml.apache.org/axis/wsdd/">
<!-- Services from MessageService WSDL service -->
<service name="MessageService"/>
</undeployment>
3.上に書いた二つのクラスのクラスのクラスをコピーします.%tomcat%/axis/WEB-INF/class/ディレクトリの下で、完全なディレクトリ構造をコピーして、二つのwsddファイルをコピーします.
%tomcats%/axis/WEB-INF/ディレクトリの下で、コンソールを開けて%tomcatHome%/axis/WEB-INF/ディレクトリの下に入ります.
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint-p 8082 deploy.wdd
-sパラメータはAxisServletがあるアプリケーションパスを指定しています.
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint-p 8082-s/axis/servlet/AxisServlet deploy.wdd
-lパラメータ指定先アプリケーションのURL
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint–lhttp://localhost:8082/axis/services/MessageService deploy.wsdd
このコマンドはこのサービスをリリースします.成功したらコンソールの下でヒントがあります.
Processing file deploy.wsdd
<Admin>Dune processing
同時に発表した後に%tomcathome%/axis/目次の下でできて、もう一つのserver-config.wddファイルがあります.
ブラウザに入力:http://localhost:8082/axis/services/MessageService下の図が見えます
5.clientの生成方法:
コンソールを開いて入る
%tomcat%/axis/WEB-INF/ディレクトリの下:
>java-Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL 2 Java-p clienthttp://localhost:8082/axis/services/MessageService?wsdl
現在のディレクトリの下でclientフォルダを作成します.このディレクトリのファイルはクライアントのソースです.
6.WSDDファイルを通じてリリースされたwebserviceをアンインストールする:
コンソールを開いて入る
%tomcat%/axis/WEB-INF/ディレクトリの下:
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint undeploy.wdd
デフォルト8080ポートでない場合はパラメータ-pを追加する必要があります.
>java-Djava.ext.dirs=lib org.apache.axis.client.AdminClint-p 8082 undeploy.wdd
PS:java-Djava.ext.dirs=libもjava-cp"lib\*"を使うことができます.
7.クライアントのStubs方式は以下の通り実現される.
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import stubclient.UserBean;
/**
* test stub client
* @author Michael sun
*/
public class TestStubClient {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
QName qname = new QName("http://wsaxis.michael.com", "user");
Service s = new Service();
Call call = (Call) s.createCall();
// bean .
call.registerTypeMapping(UserBean.class, qname,
new BeanSerializerFactory(UserBean.class, qname),
new BeanDeserializerFactory(UserBean.class, qname));
// .
call.setOperationName("getBeanStr");
// .
call.setTargetEndpointAddress(new URL(
"http://localhost:8082/axis/services/MessageService?wsdl"));
// UserBean, UserBean client UserBean
UserBean u = new UserBean();
u.setAge(28);
u.setUserName("Michael");
// ,
String str = (String) call.invoke(new Object[] { u });
System.out.println("web service :" + str);
}
}