idea16发布简单webservice以及要注意的问题

创建步骤如下:

此时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]

猜你喜欢

转载自blog.csdn.net/qq_30729829/article/details/52403596