hessian入门,Hello和文件上传范例,C#客户端+Java Tomcat后台

2.Hello范例
1)后台--定义Java接口:
package org.migle.hessian; 
public interface Hello {  
    public String sayHello(String smt);  
    public void printHello(String smt);  
}
2)后台--实现Java接口:
package org.migle.hessian.impl;
import org.migle.hessian.Hello;
public class HelloImpl implements Hello {  
    public String sayHello(String smt) {  
        return smt != null ? "hello " + smt : "hello hessian";  
    }  
    public void printHello(String smt) {  
        System.out.println("Hello " + smt);  
    }  

3)后台--配置 Tomcat/HessianServer/WEB-INF/web.xml,前提条件是lib下包含hessian-4.0.7.jar:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>hessian</display-name>
 <servlet> 
  <servlet-name>hessian</servlet-name> 
  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 
  <init-param> 
  <param-name>service-class</param-name> 
  <param-value>org.migle.hessian.impl.HelloImpl</param-value> 
  </init-param>
  </servlet>
 <servlet-mapping>
  <servlet-name>hessian</servlet-name> 
  <url-pattern>/hessian</url-pattern> 
 </servlet-mapping>
</web-app>
4)前台--C#代码,定义接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace WindowsFormsApplication3
{
    public interface Hello
    {

string sayHello(string smt);
        void printHello(string smt);
    }
}
5)前台--C#代码,实现远程调用Java类,前提条件是引用hessianCsharp.dll:
......
using hessiancsharp.client;
using hessiancsharp.io;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
            string url = "http://localhost/HessianServer/hessian";
            CHessianProxyFactory factory = new CHessianProxyFactory();

Hello test = (Hello)factory.Create(typeof(Hello), url);
            MessageBox.Show(test.sayHello("migle"));//打印从服务器端获取的字符串  
            test.printHello("Hessian"); //在服务器端控制台打印 "Hello Hessian"  
        }
......
6)运行C#程序。

3.文件上传范例,在2基础上实现
1)后台--定义Java接口:
package org.migle.hessian;
import java.io.InputStream;
public interface UploadFile {
 public boolean uploadFile(String fileName, InputStream data);
}
2)后台--实现Java接口:
package org.migle.hessian.impl;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.migle.hessian.UploadFile;
public class UploadFileImpl implements UploadFile {

@Override
 public boolean uploadFile(String fileName, InputStream in) {
  try
  {
   OutputStream out = new FileOutputStream("D:/temp/"+fileName);
   int nLength = 0;
   byte[] bData = new byte[1024];
   while( -1!=(nLength=in.read(bData)) )
   {
    out.write(bData, 0, nLength);
   }
  
   out.close();
   return true;
  } catch (FileNotFoundException e) {
   e.printStackTrace();
   return false;
  } catch (IOException e) {
   e.printStackTrace();
   return false;
  }
  finally
  {
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}
3)后台--配置 Tomcat/HessianServer/WEB-INF/web.xml,新增一个servlet:
......
 <servlet> 
  <servlet-name>upload</servlet-name> 
  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 
  <init-param> 
  <param-name>service-class</param-name> 
  <param-value>org.migle.hessian.impl.UploadFileImpl</param-value> 
  </init-param> 
 </servlet>
 <servlet-mapping>
  <servlet-name>upload</servlet-name> 
  <url-pattern>/upload</url-pattern> 
 </servlet-mapping>
......
4)前台--C#代码,定义接口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace WindowsFormsApplication3
{
    public interface Hello
    {

string sayHello(string smt);
        void printHello(string smt);
    }

public interface UploadFile //这是在hello基础上新增的部分接口
    {
        bool uploadFile(string fileName, Stream srOutput);
    }
}
5)前台--C#代码,实现远程调用Java类,在Hello范例基础上,新增一个上传文件的事件响应处理:
......
        private void buttonUpload_Click(object sender, EventArgs e)
        {
            Stream os = new FileStream(textBoxUpload.Text, FileMode.Open, FileAccess.Read);

string url = "http://localhost/HessianServer/upload";
            CHessianProxyFactory factory = new CHessianProxyFactory();
            UploadFile test = (UploadFile)factory.Create(typeof(UploadFile), url);
            test.uploadFile("test.xml", os);
            MessageBox.Show("222");
            os.Close();
        }
......

C#开发客户端、JAVA和tomcat开发服务端的更多相关文章

  1. Java的oauth2.0 服务端与客户端的实现

    oauth原理简述 oauth本身不是技术,而是一项资源授权协议,重点是协议!Apache基金会提供了针对Java的oauth封装.我们做Java web项目想要实现oauth协议进行资源授权访问,直 ...

  2. Angular开发实践(六):服务端渲染

    Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术. 标 ...

  3. 从零开始开发IM(即时通讯)服务端(二)

    好消息:IM1.0.0版本已经上线啦,支持特性: 私聊发送文本/文件 已发送/已送达/已读回执 支持使用ldap登录 支持接入外部的登录认证系统 提供客户端jar包,方便客户端开发 github链接: ...

  4. java http post/get 服务端和客户端实现json传输

    注:本文来源于<java http post/get 服务端和客户端实现json传输> 最近需要写http post接口所以学习下. 总的还是不难直接上源码! PostHttpClient ...

  5. 编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)

    查看本章节 查看作业目录 需求说明: 小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱.现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的 ...

  6. 通过Java WebService接口从服务端下载文件

    一. 前言 本文讲述如何通过webservice接口,从服务端下载文件.报告到客户端.适用于跨系统间的文件交互,传输文件不大的情况(控制在几百M以内).对于这种情况搭建一个FTP环境,增加了系统部署的 ...

  7. CAS (1) —— Mac下配置CAS到Tomcat(服务端)

    CAS (1) -- Mac下配置CAS到Tomcat(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...

  8. java开源即时通讯软件服务端openfire源码构建

    java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...

  9. JAVA RPC (十) nio服务端解析

    源码地址:https://gitee.com/a1234567891/koalas-rpc 企业生产级百亿日PV高可用可拓展的RPC框架.理论上并发数量接近服务器带宽,客户端采用thrift协议,服务 ...

  10. JAVA RPC (九) netty服务端解析

    源码地址:https://gitee.com/a1234567891/koalas-rpc 企业生产级百亿日PV高可用可拓展的RPC框架.理论上并发数量接近服务器带宽,客户端采用thrift协议,服务 ...

随机推荐

  1. mongodb 更新数组出现can't append to array using string field name

    数据库内容大概如下: { _id:, "hero_list" : { " : { , , "equip" : [ [ ], [ ], [ ], { , ...

  2. (转载)XML Tutorial for iOS: How To Read and Write XML Documents with GDataXML

    In my recent post on How To Choose the Best XML Parser for Your iPhone Project, Saliom from the comm ...

  3. input文本框获取焦点和失去焦点判断

    onBlur:当输入框失去焦点后 onFocus:当输入框获得焦点后 这两个JavaScript事件是写在html标签中的例如: <input type="text" onB ...

  4. springMVC之annotation优化

    1.在之前配置的spring配置文件中会有这样的代码: <!-- 方法映射 -->  <bean class="org.springframework.web.servle ...

  5. ibatis之##与$$的 使用

    /** 主要讲一下ibatis中$$的使用: 是为了传递参数; 参数一定在Action层用''包裹起来: */ List <SysRole> userList= systemService ...

  6. Fedora安装VirtualBox时出现错误Kernel driver not installed (rc=-1908)的解决办法

    新建虚拟机后启动时出现如下错误: Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver (vboxdrv) ...

  7. 常用aliyun公共资源列表

    公共DNS      223.5.5.5      223.6.6.6   源软件镜像站点      mirros.aliyun.com   NTP服务器 unix like      ntp1-7. ...

  8. asp.net mvc 页面缓存

    在任务中需要实现点击浏览器back按钮,加载的前一页面需要强制刷新. 想要在前端通过js来绑定数据实现,但是觉得太麻烦,还是用另一种方式来解决: 不缓存该页面. 简单易懂: Response.Cach ...

  9. NFinal学习笔记(一)

    NFinal框架,最快的netWeb框架,其有三大特色,NFinalServer,NFinalBuild,NFinal代码生成器(生成web层) 首先学习了NFinalServer. NFinalSe ...

  10. Java 访问控制符

    Java提供了3个访问控制符:private.protected和public,分别代表了3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,提供了4个访问控制级别.Java的访问控制级别 ...