java服务 服务web项目_在java项目中配置web service服务

第一步,配置axis!

照此方法进行测试!应该是可以成功的!我就是这么配置的!(还有个问题,这个问题不是程序问题,而是你在测试的时候可能会用emeditor这个工具写测试用例,这个文本编辑器在保存的时候会加入一个bom signiture,让我们的代码不能运行,真是烦死了,我被浪费了很长时间!各位多多注意!)

第二步,在自己的项目中配置axis:像上面那样测试通过之后,只是一个开始,有的网友在配置过程中用了很多批处理,这与我们做项目来说,真是太麻烦了,能不能直接在项目中来完成配置啊?!答案肯定是有的,但是我在网上查了很多,都没有找到!现在我就把我的测试过程说明一下。

创建web项目testWebService,将axis那个源文件中/axis-src-1_4/axis-1_4/lib 下的几个主要的包(就是第一步中那个配置中提到的那个几个包),拷贝到这个项目的webRoot/WEB-INF/lib下(webRoot是eclipse中创建web project时自动命名的web 根目录,在此我就直接使用了),我的服务类如下:

public class SayHello {

public String sayHelloTo(String name){

return "Hello "+ name;

}

}

配置web.xml文件,在其中加入下面这些配置:

TestServlet

org.apache.axis.transport.http.AxisServlet

TestServlet

*.jws

TestServlet

/servlet/TestServlet

TestServlet

/services/*

wsdl

text/xml

xsd

text/xml

启动tomcat,加载项目后,可以在http://localhost:8080/testWebService/servlet/TestServlet下查看到是否有axis的默认web services。如果有,说明你成功了40%了。接着你要写发布文件,我命名为deploy.wsdd,内容如下:

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

其中代表你的服务类,代表你的服务类中的方法,可以用空格隔开你提供的多个方法,或者是用*表示这个服务类中的所有方法。我把deploy.wsdd放在webRoot/WEB-INF/下

接下来,就有很多人用了批处理(.bat)文件来进行发布服务,可是我们都知道这是很烦琐的操作,我有了java为什么还要再去用命令式发布呢,我就是要用项目直接来发布,看看他们提供的bat文件内容:

set Axis_Lib=F:/coding/workspace/testWebService/WebRoot/WEB-INF/lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Axis_Servlet=http://localhost:8080/testWebService/servlet/TestServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% F:/coding/workspace/testWebService/WebRoot/WEB-INF/deploy.wsdd

PAUSE

这个是我修改的(新手就是要跟着别人的脚步走,我也走了,唉。。),我的bat就是这样的,但是这个文件的主要部分就是最后一句(不包括pause,这个是为了看看上面这些操作的结果而停顿的,要不然就一闪而过了)

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% F:/coding/workspace/testWebService/WebRoot/WEB-INF/deploy.wsdd

(不好意思,在这里编辑,就是换了行,实际上这是一个句子),前面的都是设置环境变量,所以我们就可以把这个放到我们的程序来,我是这么写的:

import java.io.File;

import org.apache.axis.client.AdminClient;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

public class DeployPro {

public static void deployPro(String servlet) throws Exception{

File f = new File(".");

String path = f.getAbsolutePath().toString().replace(".", "");

String[] args = {"-l"+servlet,path + "WebRoot/WEB-INF/deploy.wsdd"};

AdminClient.main(args);

}

}

这里主要是为了通用,我的测试方法如下:

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

public class TestWSClient {

public static void main(String[] args){

try{

String endPointUrl = "http://localhost:8080/testWebService/services/SayHello?wsdl";

DeployPro.deployPro("http://localhost:8080/testWebService/servlet/TestServlet");

Service service = new Service();

Call call = null;

call = (Call)service.createCall();

call.setTargetEndpointAddress(new java.net.URL(endPointUrl));

call.setOperationName(new QName(endPointUrl,"SayHelloTo"));

String res = (String)call.invoke(new Object[]{"pfj"});

System.out.println(res);

}catch(Exception e){

e.printStackTrace();

}

}

}

发布项目,启动tomcat。输出:

Processing file F:/coding/workspace/testWebService/WebRoot/WEB-INF/deploy.wsdd Done processing Hello pfj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值