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端 的相关文章

  • 棒棒糖中的 takePicture 失败

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

    是什么不同之处窗户之间service和一个窗户process 服务是真正的 Windows 进程 没有区别 服务的唯一特殊之处在于它由操作系统启动并在单独的会话中运行 一种独立的方式 可防止其干扰桌面会话 传统上命名为daemon http
  • 无法在活动和远程服务之间共享 SharedPreferences - Android 错误或功能?

    我想在 SharedPreferences 更改时更新远程服务 以下内容用于 API 级别 8 Android 2 2 我的活动有一个OnPreferencesChangedListener它通过服务绑定器对象调用远程服务 远程服务的接口提
  • 如何使用Android读取Service中的加速度计数据

    通常 在 Android 中 我们通过重写 OnSensorChanged 函数来读取 Activity 中的加速度计数据 我很好奇我们如何在 服务 中做到这一点 谢谢 文森特 实际上OnSensorChanged SensorEvent
  • 独立 Symfony2 包内的功能测试

    我需要直接在独立包中进行一些功能测试 我不想测试控制器 只是测试真实服务之间的一些交互 我想知道是否有标准 最佳方法可以做到这一点 我用一种方法做到了 但想知道是否有更好的方法 这是我自己的解决方案 我总结了在独立包中测试的所有过程 1 首
  • aSmack 即服务

    基本上我有一个运行整个项目的主类 该代码运行完美 尽管一旦应用程序失去焦点 它就会变得不活动 我想知道如何将其变成一项服务 一个会在启动时启动的 该应用程序将是一个用于通知的单向消息系统 IE 桌面客户端 gt Openfire 服务器 g
  • Android - 为服务实现startForeground?

    所以我不确定在哪里 如何实现此方法以使我的服务在前台运行 目前我在另一项活动中通过以下方式开始我的服务 Intent i new Intent context myService class context startService i 然
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • SC创建binpath错误

    我正在尝试在 PowerShell 中运行以下命令 sc create StrongSwan binpath C Users Kanishk Desktop Strong Strong stronswan strongswan 5 6 3
  • Autowired spring bean 不是代理

    我正在开发一个连接到 MySQL 数据库的非常小的应用程序 我正在尝试创建表记录 但收到 没有正在进行的事务 我已经准备好了所有正确的东西 服务接口 MyService 及其实现 MyServiceImpl 我已经用 Service 注释了
  • 无法从 Windows 7 上的 Windows 服务启动桌面应用程序

    HI 我在 Windows 7 上有 C WCF Windows 服务 以具有管理员权限的用户身份登录 我正在尝试在服务启动后启动桌面应用程序 我发现的所有讨论都是关于 Windows 工作站和桌面 我创建了一个单独的线程 设置线程工作站和
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 如何调试symfony2服务容器中配置的标签和服务?

    我正在编写一个服务来处理 AccessDeniedException 并且我找到了一种方法来解决它使用 Symfony2 的 AccessDeniedHandlerInterface https stackoverflow com ques
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • Go客户端程序生成大量TIME_WAIT状态的socket

    我有一个 Go 程序 它从多个 goroutine 生成大量 HTTP 请求 运行一段时间后 程序报错 connect cannot allocaterequestedaddress 当检查时netstat 我得到大量 28229 个连接T
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 如何将 Perforce 仓库位置转换为客户端视图位置

    我想知道如何将 Perforce 仓库位置转换为客户端视图位置以用于脚本编写 我有一个脚本 它首先检查文件以进行编辑 然后与该文件进行交互 我需要将仓库位置 即 Projects Project6 转换为客户端视图位置 即 d Projec
  • 使用 C# 使用证书进行 SSL 客户端身份验证

    我需要创建一个 C 应用程序 该应用程序必须使用 SSL 向服务器发送 API 请求 我需要创建客户端身份验证 我已经拥有服务器 CA 证书 客户端证书 cer 客户端私钥 pem 和密码 我找不到有关如何创建客户端连接的示例 有人可以建议
  • 如何在开头时解析 json 文件

    我想解析以下 JSON 文件 但以 向我表明这是一个数组 然后继续 对象 我当前的解析器返回一个 JSON 对象 我的问题是 如何修改解析器来解析这个文件 这样解析器将为我提供其他 JSON 文件 从对象或排列开始 JSON 文件 codi
  • JavaScript:搜索字符串时的 indexOf 与 Match? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用之间是否存在明显的性能差异 str indexOf src and str match src 我个人比较喜欢match 和正则表达式 但同

随机推荐