创建步骤如下:
此时idea会自己去java中央库区下载需要的jar包以及HelloWord的简单的工程
由于网络的原因,本人在尝试在此创建一个新的webservice时,加载jar包失败,所以直接上创建完成的工程,图片如下:
接下来配置运行环境:
配置tomcat:
如果你电脑已经安装tomcat,那么直接点击Application Server栏最后的Configuration按钮去选择tomcat即可,以及你可以选择默认的编辑器默认带的jdk或者
自己选择自己安装的jdk也可以,具体步骤如图:
我们可以看到上面有个警告,可以点击最后一步的Fix按钮去配置,配置如图:
直接点击Apply后再点击OK即可完成配置ArtiFact。
接下来配置Project Strucure,如图:
此次由于生成一个失败的工程,所以椭圆里没看到需要选择Fix的按钮已经点击Fix后出现选择弹出窗口最上面的一个选项(选择弹出窗口里最上面的一个带有Axis选择即可)
接下来生成HelloWorld类的WSDL文件:
此时就能看到生成的wsdl文件了,如图:
此时可以启动tomcat,不过运行结束后,浏览器中不会看到HelloWorld里的方法:sayHelloWorldFrom的接口
打开WEB-INFO下文件,文件如图所示:
源码如下
<service name="HelloWorld" provider="java:RPC">
<parameter name="className" value="example.HelloWorld"/>
<parameter name="allowedMethods" value="*"/>
</service>
此时重新部署工程即可看到自己编写的方法的接口了。
下来将怎么调用webservice的接口
你可以使用idea新建一个简单的java工程,或者使用eclipse创建一个简单的java工程也可以,本人为了直观,使用eclipse创建一个客户端来访问webservice,具体
如图:
然后在红色圈上右键-->Build Path -->Confiure Build Path...-->然后按下图操作,选择工程需要用到的jar包
选择完后点击窗口下的apply按钮,然后点击ok按钮。
Client源码如下,直接点击运行就能获取到接口方法返回的数据了。
package com.jiangyun.client;
import java.net.URL;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class Client {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String url = "http://127.0.0.1:8080/services/HelloWorld?wsdl";
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTimeout(new Integer(5000));
call.setOperation( "getSecurityToken" );
call.setOperationName("sayHelloWorldFrom");
call.setTargetEndpointAddress(new URL(url));
Object[] fn01 = { "john" , "john" , null ,null };
Object[] pamaters = {"jiangyun"};
String val = (String)call.invoke(pamaters);
System.out .println( "sayHelloWorldFrom(correct):" + val);
Service service2 = new Service();
Call userCall = (Call) service2.createCall();
userCall.setTimeout(new Integer(5000));
userCall.setOperationName("getAdminstration");
userCall.setTargetEndpointAddress(new URL(url));
Object[] user = {"theAnswer", "theAnswer1230"};
System.out.println("admin:" + (String)userCall.invoke(user));
} catch (Exception e) {
//java.io.InterruptedIOException: Read timed out
System.out.println(e.getMessage());
}
}
}
运行结果如下:
好了,整个流程就到此结束吧,如果你想实现更复杂的方法,也可以自己写方法的,比如连接数据库获取数据并打包成json发布出来什么的,就看你的
需要了,如有不懂的或者有什么错误的地方,欢迎发邮件到我的邮箱跟我说说,我邮箱:[email protected]