cxf的web service服务,包含client端、service端

2023-11-04

1.下载需要的客户端、服务端Jar,客户端jar包链接:  https://github.com/zhangliqingyun/jarlist/tree/master/webserviceclient    服务端jar包链接:https://github.com/zhangliqingyun/jarlist/tree/master/webserviceservice

2.配置web service服务,实现客户端与服务端通信

(1)web.xml内容

<display-name>xxfw</display-name>

  <servlet>

    <servlet-name>Way REST Service</servlet-name>

    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

    <init-param>  <!—初始化服务à

      <param-name>jersey.config.server.provider.packages</param-name>

      <param-value>com.rdtsw.service</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet>

    <description></description>

    <servlet-name>MsgSevlet</servlet-name>

    <servlet-class>com.rdtsw.action.MsgSevlet</servlet-class>

  </servlet>

  

  <servlet-mapping>

    <servlet-name>Way REST Service</servlet-name>

    <url-pattern>/ws/*</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>MsgSevlet</servlet-name>

    <url-pattern>/MsgSevlet</url-pattern>

  </servlet-mapping>

(2)服务类

@Path("/msg")

public class MsgService

(3)服务器端接收文件代码

//文件接收

  @POST

  @Path("/RecXMLData/{fileName}")

  @Produces({"application/json;charset=utf-8","text/plain"})   

  public String receiveFile(@PathParam("fileName") String fileName, @Context HttpServletRequest request, @Context HttpServletResponse response) {

  try {   

      FileOutputStream fos = new FileOutputStream(new File(path + fileName));

      byte[] buffer = new byte[8096];



      InputStream is = request.getInputStream();

      int len;

      while ((len = is.read(buffer)) != -1)

      {

        fos.write(buffer, 0, len);

      }

      fos.flush();

      fos.close();

      return "ok";

    } catch (Exception e) {

      return "no"; }



  }

(4)服务器端发送文件

//文件发送

  @POST

  @Path("/SendXmlData/{fileName}")

  @Produces({"application/json;charset=utf-8","text/plain"})  

  public String sendFile(@PathParam("fileName") String fileName, @Context HttpServletRequest request, @Context HttpServletResponse response) {

      

 try {

      File testFile = new File(path + fileName);

      FileInputStream fi = new FileInputStream(testFile);

      byte[] buf = new byte[2048];



      DataOutputStream dos = new DataOutputStream(response.getOutputStream());

      dos.writeUTF(testFile.getName());

      int len1;

      while ((len1 = fi.read(buf)) != -1)

      {

        dos.write(buf, 0, len1);

      }

      dos.flush();

      dos.close();

      fi.close();

      return "200";

    } catch (Exception e) {

      return "404"; }   

  }

(5)客户端发送文件

public static void send(String fileName,String deskUrl){



//String filename = "bbb.xml";

HttpClient ht = new DefaultHttpClient();

HttpPost post = new HttpPost("http://192.168.0.123:9080/xxfw/ws/msg/SendXmlData/"+fileName);

HttpResponse rs = null;

try {

rs = ht.execute(post);

DataInputStream is  = new DataInputStream(rs.getEntity().getContent());

byte[] buffer = new byte[2048];

int len2;

//读出文件名

String filename = is.readUTF();

FileOutputStream fos = new FileOutputStream(new File(deskUrl+filename));  

while((len2=is.read(buffer))!=-1){

fos.write(buffer, 0, len2);

}

fos.flush();

fos.close();

is.close();

} catch (Exception e) {

e.printStackTrace();

}finally{

System.out.println("文件发送成功");

post.abort();

}



}

(6)客户端接收文件

public static void receive(String fileName,String deskUrl) throws JSONException, URISyntaxException, FileNotFoundException{

//String filename = "bbb.xml";

Client c = Client.create();  

URI u =new URI("http://192.168.0.123:9080/xxfw/ws/msg/RecXMLData/"+fileName);

WebResource resource = c.resource(u);



MultivaluedMapImpl params = new MultivaluedMapImpl();



File testFile = new File(deskUrl+fileName);



FileInputStream fis = new FileInputStream(testFile);



String aaa = resource.entity(fis).post(String.class);



System.out.println("result:"+aaa);

}

(7)客户传递参数

public static void regist() throws URISyntaxException{

Client client = Client.create();  

    URI u = new URI(getUrl("RegJY4GSvr"));      

    WebResource resource = client.resource(u);    

    MultivaluedMapImpl params = new MultivaluedMapImpl();     //传递多个参数的方法   

    params.add("xh", "炫号");  

    params.add("zclx", "注册类型");  

    params.add("imei", "imei");  

    String result = resource.queryParams(params).get(String.class);   

    System.out.println(result);   



}

(8)服务端接收参数  

//注册服务

  @GET  

  @Path("RegJY4GSvr")

  @Produces({"text/plain"})   

  public String regist(@QueryParam("xh") String xh,@QueryParam("zclx") String zclx,@QueryParam("imei") String imei,@Context HttpServletRequest request,@Context HttpServletResponse response){

  

  java.util.Date now = new java.util.Date();

  String registDate = format.format(now);  //注册日全部

  String zcdwdm = "000001";  //注册单位代码

  map.put("xh", xh);

  map.put("zclx", zclx);

  map.put("imei", imei);

  map.put("zcrq", registDate);    

  map.put("zcdwdm", zcdwdm);

  try {

xxfwDao.insertRegist(map);

} catch (Exception e) {

e.printStackTrace();

}  

    return "注册成功";  

  }

(9)客户端接收服务端反回的list集合

public static void init() throws URISyntaxException{



  ClientConfig clientConfig = new DefaultClientConfig();

  clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);

  Client client = Client.create(clientConfig);

  MultivaluedMapImpl params = new MultivaluedMapImpl();

  String zcdwdm ="000001";

  String xxlx = "xxlx";

  params.add("zcdwdm", zcdwdm);

  params.add("xxlx", xxlx);

  

  WebResource resource = client.resource(getUrl("InitJY4GSvr"));    //得到注册服务初始化的url

  GenericType<List<Demo>> hsp = new GenericType<List<Demo>>(){};    //返回结果集合类型

  List<Demo> dwdmList=  resource.queryParams(params).get(hsp);      //单位代码和油料代码的集合

  System.out.println(dwdmList.get(0).getYldmList().get(0).getYldm());  

(10)服务端返回list集合  

//得到单位代码

  @GET

  @Path("InitJY4GSvr")

  @Produces({ MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})

  public Response InitJY4GSvr(@QueryParam("zcdwdm") String zcdwdm,@QueryParam("xxlx") String xxlx, @Context HttpServletRequest request, @Context HttpServletResponse response){

  map.put("zcdwdm", zcdwdm);

  map.put("xxlx", xxlx);

  List<Demo> list = new ArrayList<Demo>();

  try {

  List<Dwdm> dwdmList = xxfwDao.getDwdmList(map);                     //得到单位代码集合

  List<Yldm> yldmList = xxfwDao.getYldmList(map);                     //得到油料代码集合

  Demo demo = new Demo();

  demo.setDwdmList(dwdmList);

  demo.setYldmList(yldmList);

  list.add(demo);

  GenericEntity entity = new GenericEntity<List<Demo>>(list) {};  //返回结果类型

      return Response.ok(entity).build();

} catch (Exception e) {

  e.printStackTrace();

}

  return null;

  }

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cxf的web service服务,包含client端、service端 的相关文章

  • 如何绑定到正在运行的android服务?

    我希望这更多的是代码问题 而不是其他问题 我希望有人可以帮助解决这个问题 我还有其他使用 startService 启动服务的代码 并且当调试器点击 DecoderService 的 onCreate 函数时 我可以验证该服务是否已启动 但
  • Node.js SOAP 客户端参数格式

    我在使用 Node js 的 Node soap 模块作为客户端将某个特定的 Soap 参数正确格式化为第 3 方 SOAP 服务时遇到问题 此方法的 client describe 表示此特定输入应采用以下形式 params param
  • 服务崩溃,事件名称为 [CLR20r3] [重复]

    这个问题在这里已经有答案了 我已经创建了一项服务 Net c 基本上定期发送电子邮件 该服务在我的上运行良好x32 XP机器但是当我部署时x64 build基于另一个 x64 Windows Server 2008 R2机器 服务启动并在几
  • Spring - 如何注入具体的接口实现?

    我需要通过 Autowired 注入服务类的具体实现 服务接口 public interface PostService 执行 Service postServiceImpl public class PostServiceImpl imp
  • Android后台服务判断前台应用程序

    我正在开发一个应用程序 可以监控全天的手机使用情况 为此 我有一个后台服务 该服务在设备启动时启动 并不断轮询以找出当前的前台应用程序是什么 当我单击一个应用程序然后退出并单击另一个应用程序时 以下代码将起作用 现在假设我打开浏览器并转到另
  • 如何通过 Angular 6 中的服务将对象发送到不相关的组件?

    所以我是 Angular 的新手 我正在尝试使用服务将对象从组件 1 发送到组件 2 当我将结果记录到 component2 中的控制台时 它没有给我对象的更新值 这可能是因为服务在第二个组件中重新初始化 你能帮忙解决这个问题吗 这是我的代
  • OSGi 应用程序设计 - 我是否滥用服务框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我们正在开发的应用程序中 我有一个供数据提供程序组件实现的通用接口 并且我将这些提供程序作为服务连接起来 我的一位同事建议 最好只创建一项可以
  • AngularJS 服务 http 成功函数使用错误的“this”范围

    a 的成功函数 http put无权访问this内部调用的服务的范围 我需要在 PUT 请求的回调中更新服务的属性 这是我在服务中尝试做的事情的简化示例 var myApp angular module myApp function rou
  • 无法推送到远程 GIT 存储库 - “[...] 似乎不是 git 存储库”

    我已经在我的服务器上使用适当文件夹中的以下内容设置了 GIT 存储库 我的子域的根目录 git mydomain com mkdir foo git cd foo git git init bare shared 这将使存储库可通过 URL
  • 棒棒糖中的 takePicture 失败

    以下代码正在使用 可在后台拍照 它对于棒棒糖以下的所有版本都工作正常 但在以下版本中给出运行时异常takePicture null null mcall 有任何想法吗 public void takePictures final int d
  • Windows 服务和 Windows 进程有什么区别?

    是什么不同之处窗户之间service和一个窗户process 服务是真正的 Windows 进程 没有区别 服务的唯一特殊之处在于它由操作系统启动并在单独的会话中运行 一种独立的方式 可防止其干扰桌面会话 传统上命名为daemon http
  • 多个Android IntentService可以同时运行吗?

    据我了解 一个IntentService一次只能处理一个 Intent 因为它共享一个工作线程来完成所有工作 但如果我有多个IntentService在我的应用程序中 它们可以并行运行 还是都共享单个工作线程 但是如果我的应用程序中有多个
  • 独立 Symfony2 包内的功能测试

    我需要直接在独立包中进行一些功能测试 我不想测试控制器 只是测试真实服务之间的一些交互 我想知道是否有标准 最佳方法可以做到这一点 我用一种方法做到了 但想知道是否有更好的方法 这是我自己的解决方案 我总结了在独立包中测试的所有过程 1 首
  • 本地计算机上的服务启动然后停止,某些服务如果没有被其他服务或程序使用则自动停止

    我创建了一个示例 Windows 服务并成功安装了我的服务 但是在要启动服务时 我收到以下错误 本地计算机上的此服务启动然后停止 如果其他服务或程序未使用某些服务 则会自动停止 我的配置文件代码
  • android widget 和 localservice 绑定

    我编写播放器 它的主要活动是运行本地服务 我找不到如何将本地服务绑定到小部件 当我尝试像在活动中一样绑定它时 它失败了 请帮助我 添加 1 何时可以联系后台服务 http www developer com ws data article
  • 如何让Service即使被系统杀死也无法删除?

    我正在创建一个蓝光过滤器应用程序 因此 我想显示所有应用程序的视图 我通过以下服务做到了 public class OverlayService extends Service public OverlayService View mVie
  • Silverlight WCF服务跨域问题

    我有一个 silverlight 应用程序 托管在 Intranet mydomain net 和一个 WCF 服务 webservices mydomain net 我需要跨站点策略文件吗 如果是这样 只允许从 Intranet mydo
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • Oracle即时客户端和Oracle客户端之间的区别

    Oracle即时客户端和Oracle客户端有什么区别 你能给我解释一下吗 谢谢 Oracle 客户端附带一个安装程序和许多可执行文件 例如 sqlplus tnsping 很完整而且很大 Oracle Instant 客户端是一个基本的轻量

随机推荐