??xml version="1.0" encoding="utf-8" standalone="yes"?>
1Q在http://ws.apache.org/axis/index.html下蝲AXIS的BIN版本Qƈ其解压后将其中的webapps\axis目录拯C的tomcat目录下的webapps目录之下?/P>
2Q将以下jar拯至你的axis/WEB-INF/lib目录下:
activation.jar 、mail.jar 、xalan-2.4.0.jar 、xerces-2.4.0.jar ?xercesImpl.jar
3Q在axis目录下徏立以下文件Hello.jwsQ内容如下:
public class Hello{
public String hello(String name){
if(name==null)
name = "";
return "hello,"+name+"!";
}
}
4Q创建JAVA接口E序Q在命o行下q入到axis\WEB-INF目录下,在DOS提示W下输入Q?/P>
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl
该命令执行的l果是在当前所在目录下产生一个子目录 localhost/axis/Hello_jwsQ该目录下有四个JAVA源文Ӟ它们分别是:
Hello.java 定义了Web服务接口Q此例中只有一个helloҎ?
HelloService.java 定义了用于获取Web服务接口的方法?
HelloServiceLocator.java 接口HelloService的具体实现?
HelloSoapBindingStub.java Web服务客户端桩Q通过该类与服务器交互?/P>
5Q编写调用示例程序Main.java如下Q?/P>
package localhost.axis.Hello_jws;
public class Main {
public static void main(String[] args) throws Exception {
HelloService service = new HelloServiceLocator();
Hello hello = service.getHello();
System.out.println(hello.hello("sunbeam"));
}
}
6Q编译后q行Q如果输Z下结果,恭喜你已l成功的完成了你的第一个AXIS WEB SeriveE序啦?/P>
> hello,sunbeam
附注Q?/P>
1Q徏议用Eclipseq行开发,axis目录设ؓtomcat project工程位置Q将WEB-INF下的localhost目录设ؓ源文件目录。ƈ生成接口程序的命o行程序定为Extend Tool外部E序。这L生效率最高也最方便。具体做法今天就懒得写了Q以后再补好啦?/P>
2Q我Z写个E序试一下它所能承载的数据量和q行速度Q感觉速度明显低于HessianQ估计接q一个数量Q,传输的对象大也大约是Hessian?/5-1/10左右Q究其原因我推论是Hessian是二q制方式传输数据QAxis的WEB服务是文本型的SOAP协议传输Q而且再加上XML标签所占用的大量数据而已。下ơ再评估一下其它的RPCҎ?/P>
1、在tomcat下创Z个应用testQ在其下的WEB-INF/src目录下编写以下程序文件?/FONT>
2、创建服务端E序文gexample/BasicService.javaQ内容如下:
package example;
public class BasicService implements Basic {
private String _greeting = "Hello, world";
public void setGreeting(String greeting)
{
_greeting = greeting;
}
public String hello()
{
return _greeting;
}
}
3、创Z个本地接口,example/Basic.javaQ内容如下:
package example;
public interface Basic {
public String hello(); //与服务端的helloҎ对应
}
4、创建客L试E序Qexample/BasicClient.javaQ内容如下:
package example;
import com.caucho.hessian.client.HessianProxyFactory;
public class BasicClient { HessianProxyFactory factory = new HessianProxyFactory(); System.out.println("Hello: " + basic.hello()); 5、修改WEB-INF下的web.xml文gQ填充以下内容: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app <servlet-mapping> 6、启动tomcat后,q行一下BasicClientc?/FONT> 看一看,是不是输Z下的内容啦,如果有恭喜你Q已l成功创Z的第一个RPC Hessian应用了?BR>> Hello: Hello, world
public static void main(String []args)
throws Exception
{
String url = "
Basic basic = (Basic) factory.create(Basic.class, url);
}
}
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
" <web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>example.BasicService</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>example.Basic</param-value>
</init-param>
</servlet>
<url-pattern>/hello</url-pattern>
<servlet-name>hello</servlet-name>
</servlet-mapping>
</web-app>
... set CATALINA_HOME=C:\Tomcat4.1.29 set CLASSPATH=%JAVA_HOME%\lib\tools.jar set CLASSPATH=%JAVA_HOME%\soap-2.3.1\lib\soap.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\javamail-1.3.1\mail.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\jaf-1.0.2\activation.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xercesImpl.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xercesSamples.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xml-apis.jar set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xmlParserAPIs.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\servlet.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\tools.jar ... |
![]() |
![]() |
![]() |
1: // SOAPService.java 2: package HelloWorld; 3: public class SOAPService { 4: public String sayHi(String x) { 5: return("Hello my friend, " + x + "! Glad to see you!"); 6: } 7: } |
ID: urn:HelloWorld_SOAPService Scope: Application Methods: sayHi Provider Type: java Java Provider - Provider Class: HelloWorld.SOAPService Java Provider - Static? No |
1: // HelloWorldClient.java 2: import java.io.*; 3: import java.net.*; 4: import java.util.*; 5: import org.apache.soap.*; 6: import org.apache.soap.rpc.*; 7: public class HelloWorldClient { 8: public static void main(String[] arg) throws Exception { 9: Call c = null; 10: URL url = null; 11: Vector params = null; 12: Response rep = null; 13: String ourName = "Superman"; 14: String ourUrn = "urn:HelloWorld_SOAPService"; 15: String ourMethod = "sayHi"; 16: url = new URL("http://localhost:8080/soap/servlet/ rpcrouter"); 17: System.out.println("Passing to our deployed "+ourUrn+" our name ("+ourName+"): "); 18: c = new Call(); 19: c.setTargetObjectURI(ourUrn); 20: c.setMethodName(ourMethod); 21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); 22: params = new Vector(); 23: params.addElement(new Parameter("ourName", String.class, ourName, null)); 24: c.setParams(params); 25: System.out.print("and its answer is: "); 26: rep = c.invoke(url, ""); 27: if (rep.generatedFault()) { 28: Fault fault = rep.getFault(); 29: System.out.println("\nCall failed!"); 30: System.out.println("Code = " + fault.getFaultCode()); 31: System.out.println("String = " + fault.getFaultString()); 32: } else { 33: Parameter result = rep.getReturnValue(); 34: System.out.print(result.getValue()); 35: System.out.println(); 36: } 37: } 38:} |
![]() |
Q?xml version='1.0' encoding='UTF-8'?Q?BR>QSOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"Q?BR>QSOAP-ENV:BodyQ?BR>Qns1:sayHi xmlns:ns1="urn:HelloWorld_SOAPService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/ soap/encoding/"Q?BR>QourName xsi:type="xsd:string"QSupermanQ?ourNameQ?BR>Q?ns1:sayHiQ?BR>Q?SOAP-ENV:BodyQ?BR>Q?SOAP-ENV:EnvelopeQ? |
Q?xml version='1.0' encoding='UTF-8'?Q?BR>QSOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/ soap/envelope/" xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"Q?BR>QSOAP-ENV:BodyQ?BR>Qns1:sayHiResponse xmlns:ns1="urn:HelloWorld_SOAPService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap. org/soap/encoding/"Q?BR>Qreturn xsi:type="xsd:string"QHello my friend, Superman! Glad to see you!Q?returnQ?BR>Q?ns1:sayHiResponseQ?BR>Q?SOAP-ENV:BodyQ?BR>Q?SOAP-ENV:EnvelopeQ? |