java webservice数组_java webservice的多种实现方法汇总

一、基于EJB容器管理webservice:

1.首先建立一个Web services EndPoint:

packagecn.test.service.impl;importjava.util.ArrayList;importjava.util.List;importjavax.jws.WebMethod;importjavax.jws.WebService;importcn.test.Person;importcn.test.service.HelloWorld;

@WebServicepublic class HelloWorldImpl implementsHelloWorld {

@WebMethodpublic voidsay() {

System.out.println(" hello service");

}

@WebMethodpublicPerson getPersonById( String id) {

System.out.println(" id = "+id);return new Person("aaa", "123", 5);

}

@WebMethodpublic ListgetAll() {

List list = new ArrayList();for (int i = 0; i < 5; i++) {

list.add(new Person("100"+i, "kk"+i, 12+i));

}returnlist;

}

@WebMethodpublicString insert(Person p) {

System.out.println(p);return p.getId()+"java";

}

}

2. 进入src目录下使用apt编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成 jaws目录。例如:D:\dianzi\Test\src>apt -d . cn/test/service/impl/HelloWorldImpl.java

3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示

3217513.html

4.使用wsimport 生成客户端

使用如下:D:\dianzi\Test\src>wsimport -p cn.client -keep http://localhost:8080/helloWorld?wsdl

这时,会在当前目录中生成如下文件:

3217513.htmled8b6a310cbbc87fbe303f6ca8b28a1d.png

5.客户端测试:

public classT {public static voidmain(String[] args) {

HelloWorldImplService service= newHelloWorldImplService();

HelloWorldImpl helloWorld=(HelloWorldImpl) service.getHelloWorldImplPort();

System.out.println(helloWorld.getAll().size());

System.out.println(helloWorld.getPersonById(""));

}

}

6、不用生成代码,通过jboss服务器进行管理:

例如下面的类写好之后,发布到服务器上,通过地址   http://127.0.0.1/root/CompanyService?wsdl 就可以查看发布情况,其中“contextRoot”表示根目录,urlPattern表示匹配路径。

@Stateless

@WebService

@WebContext(contextRoot= "/root", urlPattern = "/CompanyService")

@SOAPBinding(style= SOAPBinding.Style.RPC,use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)public classCompanyWSBean implements CompanyWS {

Logger logger=Logger.getLogger(CompanyWSBean.class);

@EJBprivateCompanyServiceLocal companyServiceLocal;

@WebMethod

@WebResult(partName= "return")publicTBLCompany find(String id) {try{returncompanyServiceLocal.find(id);

}catch(Exception e) {

logger.error(e);

}return null;

}

}

二、将第一种webservice移动到 WEB层,就是通过WEB容器模式管理:

1、准备pojo对像:接口和实现类

开发步骤如下:

建立一个POJO端点--在web.xml中--------将这个POJO端点配置成一个Servlet-----------将这个POJO端点打包成一个应用(war包或ear)

packagecn.test.ws.web.intf;importcom.cjonline.foundation.evisa.entity.TBLOperator;public interfaceHelloWorld {publicString say(String s);publicString eat(String s);publicTBLOperator findOperator();

}

packagecn.test.ws.web.impl;importjavax.jws.WebMethod;importjavax.jws.WebService;importcn.test.ws.web.intf.HelloWorld;importcom.cjonline.comm.util.EJBAssistant;importcom.cjonline.foundation.evisa.entity.TBLOperator;importcom.cjonline.foundation.evisa.exception.ServiceException;importcom.cjonline.foundation.evisa.service.intf.OperatorServiceRemote;

@WebServicepublic class HelloWorldImpl implementsHelloWorld{private OperatorServiceRemote userService =EJBAssistant.getEJB("OperatorServiceBean/remote", OperatorServiceRemote.class);

@WebMethodpublicString say(String s) {

System.out.println(" web say : "+s);return " web say : "+s;

}

@WebMethodpublicString eat(String s) {

System.out.println(" web eat : "+s);return " web eat : "+s;

}

@WebMethodpublicTBLOperator findOperator(){try{return userService.findAll1().get(0);

}catch(ServiceException e) {

e.printStackTrace();

}return null;

}

}

2、在web.xml中将它配置成一个Servlet:

HelloService

cn.test.ws.web.impl.HelloWorldImpl

HelloService

/hello

3、进入到jbossws管理服务中,通过地址 http://lenovo-pc//hello?wsdl可以查看发布的信息,就可以调用方法。

三、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的:

利用xfire开发WebService,可以有三种方法:

1一种是从javabean 中生成;

2 一种是从wsdl文件中生成;

3 还有一种是自己建立webservice

步骤如下:

用myeclipse建立webservice工程,目录结构如下:

3217513.html

首先建立webservice接口,代码如下:

1

4f1150b881333f12a311ae9ef34da474.pngpackagecom.myeclipse.wsExample;24f1150b881333f12a311ae9ef34da474.png//Generated by MyEclipse34f1150b881333f12a311ae9ef34da474.png41fa987a29c6482f53d401256f96355eb.pngpublicinterfaceIHelloWorldService{5d18c02628675d0a2c816449d98bda930.png6d18c02628675d0a2c816449d98bda930.pngpublicString example(String message);7d18c02628675d0a2c816449d98bda930.png88f1ba5b45633e9678d1db480c16cae3f.png}

接着实现这个借口:

1

4f1150b881333f12a311ae9ef34da474.pngpackagecom.myeclipse.wsExample;24f1150b881333f12a311ae9ef34da474.png//Generated by MyEclipse34f1150b881333f12a311ae9ef34da474.png41fa987a29c6482f53d401256f96355eb.pngpublicclassHelloWorldServiceImplimplementsIHelloWorldService{5d18c02628675d0a2c816449d98bda930.png697e794c86028c5f5b5461ae5ef440a4c.pngpublicString example(String message){7d18c02628675d0a2c816449d98bda930.pngreturnmessage;8ecedf933ec37d714bd4c2545da43add2.png    }9d18c02628675d0a2c816449d98bda930.png108f1ba5b45633e9678d1db480c16cae3f.png}

修改service.xml 文件,加入以下代码:

1

4f1150b881333f12a311ae9ef34da474.png24f1150b881333f12a311ae9ef34da474.pngHelloWorldService3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值