今天开发的项目需要用到webservice,我们的项目的中间件是Webshpere.
于是乎我就做个webservice的demo呗。
我没多想,就打开了内存杀手工具,WID(websphere integration Developer).
开发webservice无非就是4个步骤。
1,写个java文件,写几个不是static的接口,到时候这个类就需要发布成webservice了。
2,根据java文件生成WSDL文件呗。
3,发布呗
4,测试呗。
好,那下面我们开始吧
1,首先在WID下面创建一个Test的Java项目。并且建一个类 net.chinacsharp.HelloWorld.java,具体代码内容见下图。
2,我们新建个WebService的项目吧。
服务的实现选择
然后下一步,下一步下一步,都缺省的下去。
然后在服务器启动页面点击“启动服务器”按钮。
3,然后会生成项目,如下图所示
4,然后修改下面的代码
把那个 上图选中的那个地址改为下面的地址,因为上面的是https的地址,调用会掉不通
// 用于获取 helloWorld 的代理类
private final java.lang.String helloWorld_address = http://localhost:9080/WebServiceProject/services/HelloWorld;
5,然后新建Test.java 如下图所示
然后运行这个main函数,会输出
“Hello,this is my first webservice,welcome keyboardsun”。说明发布调用都成功了。
但是到这里,我们其实只成功了一半,因为我们在项目中发布的时候,webservice是需要跟项目打包在一起发布的,那怎么办呢。
我们新建一个WEB项目叫MyWeb吧。
如下图。
然后我们把WebServiceProject里面的WEB-INF下面的所有文件都copy到MyWeb的工程的WEB-INF下面。直接覆盖吧。
然后需要把web.xml的 <display-name>WebServiceProject</display-name>
改为 <display-name>MyWeb</display-name>
把wsdl/HelloWorld.wsdl的改为
<wsdlsoap:address location="https://localhost:9443/MyWeb/services/HelloWorld"/>
然后我们把Test的JAVA工程导出为Test.jar,
把MyWeb的工程导出为MyWeb.war,然后把Test.jar放到MyWeb.war的WEB-INF/lib目录下面。
然后我们发布。
这里发布的时候,上下文的根要写成MyWeb。
然后发布成功,启动MyWeb。
我们回到WID,写个main函数测试下发布的webservice。
我们右键HelloWorld.wsdl--
如图
然后我们修改下代码,如下图.
然后我们新建测试类
public static void main(String[] args) throws RemoteException {
HelloWorldProxy proxy = new HelloWorldProxy();
HelloWorld hello = proxy.getHelloWorld();
String result = hello.hello("keyboardsun");
System.out.println(result);
}
运行Main函数,输出是正确的,说明我们新的webservice发布成功。
其实也就是几个配置文件加上一个wsdl文件,就把一个普通的类的调用用webservice给包装了下。
所有代码地址
http://keyboardsun.iteye.com/topics/download/7b1d4d11-95d2-37e0-ab7b-5491ff54158a