zoukankan      html  css  js  c++  java
  • .Net调用Java的实现方法

     

    一. IKVM

    1.1下载配置IKVM

    1.1.1. 下载路径

    http://www.ikvm.net/index.html

    1.1.2. 设置路径

    解压ikvm-0.42.0.3.zip,并将%IKVM_HOME%/bin添加到path中。此处的%IKVM_HOME%是指解压后ikvm的主目录。

    1.2第一种方式:直接将.class文件转化成.dll

    网站介绍

    http://www.codeproject.com/Articles/13549/Using-Java-Classes-in-your-NET-Application

    在Dos界面中输入命令,转到ikvm.exe应用程序的目录下;

    同时将要转化的.class文件(例如testmain.class文件)放到目录下,在dos里输入以下命令:

    ikvmc<空格>–target:library<空格>testmain.class

    可在C:Program Filesikvmin目录下查看生成的.dll文件

    链接介绍节目如下:

    1.3第二种方式:将Java的项目的jar包转化成.dll

    c#直接调用java代码,需要ikvmbin-0.44.0.5.zip

    1. 下载并解压

    2. 配置环境变量:

    在path中添加%IKVM_HOME%in,IKVM_HOME为解压后的IKVM的主目录。在dos界面,输入"ikvm"命令,测试是否配置成功

    3. 编写java代码(java代码,要放在指定的package下,不要放在默认包下):

     1 package com.xyy.csharp;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class TestMain {
     7 
     8     //获得集合
     9     public List<Demo1> getLists(){
    10         List<Demo1> lst=new ArrayList<Demo1>();
    11         Demo1 d=new Demo1();
    12         d.setId(1);
    13         d.setName("admin");
    14         Demo1 d2=new Demo1();
    15         d2.setId(2);
    16         d2.setName("sa");
    17         
    18         lst.add(d);
    19         lst.add(d2);
    20         return lst;
    21     }
    22     
    23     //获得字符串
    24     public String getString(){
    25         return "我是字符串";
    26     }
    27     
    28     //获得对象
    29     public Demo1 getObject(){
    30         Demo1 demo=new Demo1();
    31         demo.setId(1);
    32         demo.setName("admin");
    33         return demo;
    34     }
    35     
    36     //获得boolean
    37     public boolean getBoolean(){
    38         return Boolean.TRUE;
    39     }
    40     
    41     //在控制台输出
    42     public void SystemOutPrint(){
    43         System.out.println("我是控制台输出语句");
    44     }
    45 }

    5. 将java项目打成jar包(test.jar),打包过程详见备注:
    6. 在Dos界面中输入命令,CD表示改变当前目录,转到ikvm.exe应用程序的目录下;

    同时将要转化的.jar文件(例如ikvm.jar文件)放到目录下,输入命令,将ikvm.jar文件转换成zhou.dll文件:

    Ikvm命令格式:ikvmc<空格>-out:aaa.dll<空格>bbb.jar

    其中:bbb.jar表示要转化的.jar文件,aaa.dll表示要生成的.dll文件名。

    7. 新建c#项目,引入以下三个dll:

    %IKVM_HOME%inIKVM.OpenJDK.Core.dll

    %IKVM_HOME%inIKVM.Runtime.dll

    %IKVM_HOME%inIKVM.Runtime.JNI.dll

    引入刚刚打包的IKVM.dll 

    8.

    9. 输出结果:

    10. c#不能直接接收java返回的集合,这里就没深入研究了

    备注:将JAVA项目打包成jar包过程

    http://www.cnblogs.com/myCodingSky/p/3347511.html

    java项目打jar包分为2种情况:

    一、java项目没有导入第三方jar包

    1. 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;
    2. 选择Java/JAR file,Next;
    3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;
    这里有几个选项:
     * Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
     * Export all output folders for checked projects 表示导出选中项目的所有文件夹
     * Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
     * Export refactorings for checked projects 把一些重构的信息文件也包含进去


    在Select the export destination中选择导出的jar的路径,Next
    4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next
    5. 下一个页面里可以对项目做一些配置。(如果项目没有引入第三方jar包,这项我们采用系统默认的选项就OK,Main class一定要设置成为你项目的那个主方法入口类)
     * Generate the manifest file 是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
     * Use existing mainfest from workspace 这是可以选择我们自定义的.MF文件,格式如上所写。
     * Seal content 要封装整个jar或者指定的包packet
     * Main class 这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。
    最后Finish,搞定。 ......

    二、 java项目有导入第三方Jar包(例如项目中有导入sqlserver2005.jar包)

    这时候打包就相对复杂一点:

    前面的4步和上面的情况是一样,只是第5步需要选择Use existing mainfest from workspace选项,并选择你自己创建的一个MANIFEST. MF文件,因为系统默认选择的是Generate the manifest file选项,而该选项不会将项目用到得第三方jar包打入到java项目生成的jar包中去。

    自定义配置文件MANIFEST.MF :

    首先在项目的根目录下创建一个MANIFEST.MF文件

    接下来用记事本打开该文件,并编辑:

    例如:
    Manifest-Version: 1.0
    Main-Class: StudentManager_Test
    Class-Path: sqlserver2005.jar
    其中的Manifest-Version是指程序的版本号,Main-Class是指程序的主方法入口类,slass-Path就指定了外来jar包的位置。请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下有相关的jar包(即sqlserver2005.jar,如果有引入多个第三方jar包,则可以用空格隔开)放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。

    二. Web Service

     搭建JavaWebService 

     2.1什么是WebServices

         它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的Web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过Web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。

    关键的技术和规则

    在构建和使用Web Service时,主要用到以下几个关键的技术和规则:

    1.XML: 描述数据的标准方法.

    2.SOAP: 表示信息交换的协议.

    3.WSDL: Web服务描述语言.

    4.UDDI: 通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。

    XML

    可扩展的标记语言(XML)是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

    SOAP

    SOAP是Web Service的标准通信协议,SOAP为simple object access protocoll的缩写,简单对象访问协议. 它是一种标准化的传输消息的XML消息格式。

    WSDL

    WSDL的全称是web service Description Language,是一种基于XML格式的关于web服务的描述语言。其主要目的在于web service的提供者将自己的web服务的所有相关内容,如所提供的服务的传输方式,服务方法接口,接口参数,服务路径等,生成相应的完全文档,发布给使用者。使用者可以通过这个WSDL文档,创建相应的SOAP请求消息,通过HTTP传递给webservice提供者;web服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。

    UDDI

    将web service进行UDDI注册发布,UDDI是一种创建注册表服务的规范,以便大家将自己的web service进行注册发布供使用者查找.然而当服务提供者想将自己的web service向全世界公布,以便外部找到其服务时,那么服务提供者可以将自己的web service注册到相应的UDDI商用注册网站,目前全球有IBM等4家UDDI商用注册网站。因为WSDL文件中已经给定了web service的地址URI,外部可以直接通过WSDL提供的URI进行相应的web service调用。所以UDDI并不是一个必需的web service组件,服务方完全可以不进行UDDI的注册。

    2.2 创建并发布自己的Web Service

    1  安装MyEclipse

    2  配置Tomcat

     打开MyEclipse

    菜单栏 –> File –> New –> Web Service Project

    在这里,我们使用JAX-WS方式

    JAX-WS

    Jax-WS是Java1.6中才有的,新的Web Service模式,基于注解的方式配置Web Service,很类似Asp中的Web Service,难度已经比Xfire方式的配置降低了很多.

    REST(JAX-RS)

    用的比较少

    Xfire(已过时)

    配置比较繁琐

    创建Service中的包及类库,实现自己的业务。

    我们创建的是一个用户管理系统,自然需要来管理用户。

    发布Web Service

    到此WS发布完成,接下来配置TomCat

    在弹出的窗体中依次展开 MyEclipse ->Servers –>Tomcat

    对着项目右击添加库文件

     到此,所有步骤都以配置完毕 开始部署

     启动TomCat

     在工具栏中找到部署图标

    部署完成,打开IE进行测试

    2.3创建客户端进行测试

     此时,项目中将会生成WS所需的类库文件

    创建一个调用测试类

    到此,我们的Web Service就配置+测试完毕了。其实并不难,就算步骤比较多,比较繁琐,容易忘记,可以当一个备忘录吧,方便以后翻阅!

     

    参考资料:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html

                  http://blog.csdn.net/hehainan_86/article/details/28621989

  • 相关阅读:
    8.10
    今日头条笔试题 1~n的每个数,按字典序排完序后,第m个数是什么?
    Gym 100500B Conference Room(最小表示法,哈希)
    CodeForces 438D The Child and Sequence(线段树)
    UVALIVE 6905 Two Yachts(最小费用最大流)
    Gym Conference Room (最小表示法,哈希)
    hdu 2389 Rain on your Parade(二分图HK算法)
    Codeforces Fox And Dinner(最大流)
    zoj 3367 Counterfeit Money(dp)
    ZOJ3370. Radio Waves(2-sat)
  • 原文地址:https://www.cnblogs.com/lezhou2014/p/3950838.html
Copyright © 2011-2022 走看看