梓聪's profile传说中的16号PhotosBlogListsMore ![]() | Help |
|
|
January 13 jws笔记(3)做service的业务的时候,必然是有好多类的,在服务端类Test.jws里面如何去调用这些类呢?
只要把这些类编译完生成的class文件放到E:\tomcat4.1\webapps\axis\WEB-INF\classes下即可。打成jar包也行(没试过,应该好使,呵呵)。 jws笔记(2)使用.Net来创建client也很简单,我使用C#。
创建一个新的Windows应用,添加一个Label和一个Button,在参照的地方,添加一个web参照(Web Reference),在URL处输入http://localhost:8000/axis/Test.jws?wsdl,Web参照名输入wtest。
Button的Click事件响应:
private void button1_Click(object sender, System.EventArgs e) { // Create a TestService object wtest.TestService s = new wtest.TestService(); try { this.label1.Text = s.getPzc().ToString(); } catch (System.Web.Services.Protocols.SoapException ex) { MessageBox.Show(ex.Message); } } TestService定义在Reference.cs里面,TestService有各种接口。 仔细看看\project\Web References\Reference.cs,会有很多发现 jws的学习资料网上有好多学习的资料,备忘于此:
----IBM的,java作服务端,给出了VB和VC的client实现。
----最简单的server搭建,给出了简单的java的service和clent的实现。
----IBM的,相关知识的概念性的描述。
----某个人的Blog,里面有好多文章都不错(Java web service,Spring,Hibernate等等),很不错。 jws笔记(1)在浏览器访问http://localhost:8000/axis/Test.jws?wsdl(或者访问http://localhost:8000/axis/Test.jws,然后点击页面下面的链接生成wsdl文件)这个的时候,页面响应的时候,会生成一个wsdl文件的内容,利用wsdl2java这个工具(Eclipse插件),可以跟据这个wsdl文件的内容生成4个java类(相当于客户端),可以进行调用。
在用wsdl2java工具生成代码时,把刚才页面响应的wsdl文件内容拷贝另存为a.wsdl文件,值得注意的是,把xml头标签(<?xml ....?>)删除掉,把所有非ASCII删除掉,否则,生成代码会失败(会有提示)。
生成的4个类,2个是interface,2个是实现类,很像EJB(不太懂
使用那两个实现类去调用web service的方法:
System.out.println(new TestSoapBindingStub(new java.net.URL(endpoint),new TestServiceLocator()).getName());
其中:getName()是web service提供的一个方法。
仔细看看这两个实现类的方法,会发现调用方式和那个简单的例子是很类似的,呵呵。
--------------------------------------------------------------------------------------------------------------------------- 纠正一下,并不一定生成4个类,更复杂的服务,可能会更多,但是***BindingStub.java和***Locator.java是主要关注的。 如何开始一个Java web service?这是一个很不错的例子,简单易懂:
这是那个例子的内容:
Axis是Apache的一个开源web service引擎。它目前最为成熟的开源web service引擎之一。下面我主要介绍一下如何使用该Axis开发您的web service 服务。
1、安装
以tomcat4.1为服务器,下面说明如何安装axis:
1.解压下载后的包,将包中axis目录复制到tomcat目录下的webapps目录下;
2.将axis/WEB-INF/lib目录下类文件复制到tomcat目录下的common/lib目录下;
3.重新启动tomcat;
4.访问http://localhost:8080/axis/happyaxis.jsp,如果能访问,表示安装成功;
2、开发webservice服务
a.编写普通类文件,如下所示:
//文件名:Test.java
import java.util.*;
public class Test
{
//fields
private String name="gaga";
private int age=20;
private List items=new ArrayList();
//method at here.
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public List getItems()
{
return items;
}
}
将本文件(Test.java)复制到Axis目录下,并将其更名为Test.jws;
b.访问http://localhost:8080/axis/Test.jws,Axis就会编译该文件,并将其部署到系统中,下面你就可以开发web service的客户端程序了;
3、开发客户端程序
下面是客户端程序:
import org.apache.axis.client.*;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestWebService
{
public static void main(String args[])
{
System.out.println("Start invoking....");
try {
String endpoint =
"http://localhost:8080/axis/Test.jws";
//你写的那个文件
Service service = new Service();
Call call = (Call)
service.createCall();
call.setTargetEndpointAddress
( new java.net.URL(endpoint) );
call.setOperationName("getAge");
//填写你要调用的方法名称
int ret =Integer.parseInt
(("" + call.invoke( new Object[] {} )));
System.out.println(ret);
} catch (Exception e) {
System.err.println(e.toString());
}
System.out.println("Finished the invoking.");
}
}
关于业务调用封装到服务端程序里,然后部署就可以了,就这么简单。1.在这里下载axis:http://ws.apache.org/axis/(现在的最新版本是1.3 final) 2.对于上面的例子,当写客户端程序的时候,假设使用Eclipse,需要把例子里面提到的“axis/WEB-INF/lib目录下类文件(jar包)”都拷到工程里,并且设置classpath。 January 12 WebService:wsdl2javakey words:
1.Java Web Service。
2.Eclipse(2.x) plugin
3.wsdl
一个Eclipse的插件,根据.wsdl文件来生成.java类。
例如,我的webservice地址是http://localhost:8000/axis/Test.jws,
那么,用这个插件生成的4个文件的package是localhost.axis.Test_jws,
4个文件分别是:
public interface Test extends java.rmi.Remote public interface TestService extends javax.xml.rpc.Service public class TestServiceLocator extends org.apache.axis.client.Service implements localhost.axis.Test_jws.TestService public class TestSoapBindingStub extends org.apache.axis.client.Stub implements localhost.axis.Test_jws.Test |
|
|