1.1.1. 下載路徑
http://www.ikvm.net/index.html
1.1.2. 設(shè)置路徑
解壓ikvm-0.42.0.3.zip,并將%IKVM_HOME%/bin添加到path中。此處的%IKVM_HOME%是指解壓后ikvm的主目錄。
1.2第一種方式:直接將.class文件轉(zhuǎn)化成.dll網(wǎng)站介紹
http://www.codePRoject.com/Articles/13549/Using-Java-Classes-in-your-NET-application
在Dos界面中輸入命令,轉(zhuǎn)到ikvm.exe應(yīng)用程序的目錄下;
同時將要轉(zhuǎn)化的.class文件(例如testmain.class文件)放到目錄下,在dos里輸入以下命令:
ikvmc<空格>–target:library<空格>testmain.class
可在C:/Program Files/ikvm/bin目錄下查看生成的.dll文件
鏈接介紹節(jié)目如下:
1.3第二種方式:將Java的項(xiàng)目的jar包轉(zhuǎn)化成.dllc#直接調(diào)用java代碼,需要ikvmbin-0.44.0.5.zip
1. 下載并解壓
2. 配置環(huán)境變量:
在path中添加%IKVM_HOME%/bin,IKVM_HOME為解壓后的IKVM的主目錄。在dos界面,輸入"ikvm"命令,測試是否配置成功
3. 編寫java代碼(java代碼,要放在指定的package下,不要放在默認(rèn)包下):
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項(xiàng)目打成jar包(test.jar),打包過程詳見備注:6. 在Dos界面中輸入命令,CD表示改變當(dāng)前目錄,轉(zhuǎn)到ikvm.exe應(yīng)用程序的目錄下;
同時將要轉(zhuǎn)化的.jar文件(例如ikvm.jar文件)放到目錄下,輸入命令,將ikvm.jar文件轉(zhuǎn)換成zhou.dll文件:
Ikvm命令格式:ikvmc<空格>-out:aaa.dll<空格>bbb.jar
其中:bbb.jar表示要轉(zhuǎn)化的.jar文件,aaa.dll表示要生成的.dll文件名。
7. 新建c#項(xiàng)目,引入以下三個dll:
%IKVM_HOME%/bin/IKVM.OpenJDK.Core.dll
%IKVM_HOME%/bin/IKVM.Runtime.dll
%IKVM_HOME%/bin/IKVM.Runtime.JNI.dll
引入剛剛打包的IKVM.dll
8.
9. 輸出結(jié)果:
10. c#不能直接接收java返回的集合,這里就沒深入研究了
備注:將JAVA項(xiàng)目打包成jar包過程
http://m.survivalescaperooms.com/myCodingSky/p/3347511.html
java項(xiàng)目打jar包分為2種情況:
一、java項(xiàng)目沒有導(dǎo)入第三方j(luò)ar包
1.首先在Eclipse中打開項(xiàng)目, 右鍵點(diǎn)擊項(xiàng)目,選擇“Export”;2. 選擇Java/JAR file,Next;3. Select the resources to export中可以選擇你想要包含的項(xiàng)目文件夾,一些不必要的文件夾就無需放進(jìn)去了,免得增大空間;這里有幾個選項(xiàng):*Export generated classfiles and resources 表示只導(dǎo)出生成的.class文件和其他資源文件* Export all output folders for checked projects 表示導(dǎo)出選中項(xiàng)目的所有文件夾* Export java source file and resouces 表示導(dǎo)出的jar包中將包含你的源代碼*.java,如果你不想泄漏源代碼,那么就不要選這項(xiàng)了* Export refactorings for checked projects 把一些重構(gòu)的信息文件也包含進(jìn)去
在Selectthe export destination中選擇導(dǎo)出的jar的路徑,Next4. 下一頁可以選擇是否導(dǎo)出那些含有警告warning或者錯誤errors的*.class文件。一般不用理他,Next5. 下一個頁面里可以對項(xiàng)目做一些配置。(如果項(xiàng)目沒有引入第三方j(luò)ar包,這項(xiàng)我們采用系統(tǒng)默認(rèn)的選項(xiàng)就OK,Mainclass一定要設(shè)置成為你項(xiàng)目的那個主方法入口類)* Generate the manifest file是系統(tǒng)幫我們自動生成MANIFEST.MF文件,如果你的項(xiàng)目沒有引用其他class-path,那可以選擇這一項(xiàng)。* Use existing mainfest from workspace 這是可以選擇我們自定義的.MF文件,格式如上所寫。* Seal content 要封裝整個jar或者指定的包packet* Main class 這里可以選擇你的程序入口,將來打包出來的jar就是你這個入口類的執(zhí)行結(jié)果。最后Finish,搞定。......
二、 java項(xiàng)目有導(dǎo)入第三方Jar包(例如項(xiàng)目中有導(dǎo)入sqlserver2005.jar包)
這時候打包就相對復(fù)雜一點(diǎn):
前面的4步和上面的情況是一樣,只是第5步需要選擇Useexisting mainfest from workspace選項(xiàng),并選擇你自己創(chuàng)建的一個MANIFEST. MF文件,因?yàn)橄到y(tǒng)默認(rèn)選擇的是Generate the manifest file選項(xiàng),而該選項(xiàng)不會將項(xiàng)目用到得第三方j(luò)ar包打入到j(luò)ava項(xiàng)目生成的jar包中去。
自定義配置文件MANIFEST.MF :
首先在項(xiàng)目的根目錄下創(chuàng)建一個MANIFEST.MF文件
接下來用記事本打開該文件,并編輯:
例如:Manifest-Version: 1.0Main-Class: StudentManager_TestClass-Path: sqlserver2005.jar其中的Manifest-Version是指程序的版本號,Main-Class是指程序的主方法入口類,slass-Path就指定了外來jar包的位置。請注意假設(shè)我們的項(xiàng)目打包后為project.jar,那么按照上面的定義,應(yīng)該在 project.jar的同層目錄下有相關(guān)的jar包(即sqlserver2005.jar,如果有引入多個第三方j(luò)ar包,則可以用空格隔開)放在里面。否則將會出現(xiàn)Exception in thread "main"java.lang.NoClassDefFoundError的錯誤。
二. Web Service搭建Java版WebService
2.1什么是WebServices它是一種構(gòu)建應(yīng)用程序的普遍模型,可以在任何支持網(wǎng)絡(luò)通信的操作系統(tǒng)中實(shí)施運(yùn)行;它是一種新的Web應(yīng)用程序分支,是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過Web調(diào)用。Web Service是一個應(yīng)用組件,它邏輯性的為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù).各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標(biāo)準(zhǔn)數(shù)據(jù)格式(Http,xml,Soap)來訪問Web Service,通過Web Service內(nèi)部執(zhí)行得到所需結(jié)果.Web Service可以執(zhí)行從簡單的請求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。
關(guān)鍵的技術(shù)和規(guī)則
在構(gòu)建和使用Web Service時,主要用到以下幾個關(guān)鍵的技術(shù)和規(guī)則:
1.XML: 描述數(shù)據(jù)的標(biāo)準(zhǔn)方法.
2.SOAP: 表示信息交換的協(xié)議.
3.WSDL: Web服務(wù)描述語言.
4.UDDI: 通用描述、發(fā)現(xiàn)與集成,它是一種獨(dú)立于平臺的,基于XML語言的用于在互聯(lián)網(wǎng)上描述商務(wù)的協(xié)議。
XML
可擴(kuò)展的標(biāo)記語言(XML)是Web Service平臺中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既是平臺無關(guān)的,又是廠商無關(guān)的。無關(guān)性是比技術(shù)優(yōu)越性更重要的:軟件廠商是不會選擇一個由競爭對手所發(fā)明的技術(shù)的。
SOAP
SOAP是Web Service的標(biāo)準(zhǔn)通信協(xié)議,SOAP為simple objectaccess protocoll的縮寫,簡單對象訪問協(xié)議. 它是一種標(biāo)準(zhǔn)化的傳輸消息的XML消息格式。
WSDL
WSDL的全稱是web service Description Language,是一種基于XML格式的關(guān)于web服務(wù)的描述語言。其主要目的在于web service的提供者將自己的web服務(wù)的所有相關(guān)內(nèi)容,如所提供的服務(wù)的傳輸方式,服務(wù)方法接口,接口參數(shù),服務(wù)路徑等,生成相應(yīng)的完全文檔,發(fā)布給使用者。使用者可以通過這個WSDL文檔,創(chuàng)建相應(yīng)的SOAP請求消息,通過HTTP傳遞給webservice提供者;web服務(wù)在完成服務(wù)請求后,將SOAP返回消息傳回請求者,服務(wù)請求者再根據(jù)WSDL文檔將SOAP返回消息解析成自己能夠理解的內(nèi)容。
UDDI
將web service進(jìn)行UDDI注冊發(fā)布,UDDI是一種創(chuàng)建注冊表服務(wù)的規(guī)范,以便大家將自己的web service進(jìn)行注冊發(fā)布供使用者查找.然而當(dāng)服務(wù)提供者想將自己的web service向全世界公布,以便外部找到其服務(wù)時,那么服務(wù)提供者可以將自己的web service注冊到相應(yīng)的UDDI商用注冊網(wǎng)站,目前全球有IBM等4家UDDI商用注冊網(wǎng)站。因?yàn)閃SDL文件中已經(jīng)給定了web service的地址URI,外部可以直接通過WSDL提供的URI進(jìn)行相應(yīng)的web service調(diào)用。所以UDDI并不是一個必需的web service組件,服務(wù)方完全可以不進(jìn)行UDDI的注冊。
2.2 創(chuàng)建并發(fā)布自己的WebService1 安裝MyEclipse
2 配置Tomcat
打開MyEclipse
菜單欄 –> File –>New –> Web Service Project
在這里,我們使用JAX-WS方式
JAX-WS
Jax-WS是Java1.6中才有的,新的Web Service模式,基于注解的方式配置Web Service,很類似asp中的Web Service,難度已經(jīng)比Xfire方式的配置降低了很多.
REST(JAX-RS)
用的比較少
Xfire(已過時)
配置比較繁瑣
創(chuàng)建Service中的包及類庫,實(shí)現(xiàn)自己的業(yè)務(wù)。
我們創(chuàng)建的是一個用戶管理系統(tǒng),自然需要來管理用戶。
發(fā)布Web Service
到此WS發(fā)布完成,接下來配置TomCat
在彈出的窗體中依次展開 MyEclipse->Servers –>Tomcat
對著項(xiàng)目右擊添加庫文件
到此,所有步驟都以配置完畢 開始部署
啟動TomCat
在工具欄中找到部署圖標(biāo)
部署完成,打開IE進(jìn)行測試
2.3創(chuàng)建客戶端進(jìn)行測試此時,項(xiàng)目中將會生成WS所需的類庫文件
創(chuàng)建一個調(diào)用測試類
到此,我們的Web Service就配置+測試完畢了。其實(shí)并不難,就算步驟比較多,比較繁瑣,容易忘記,可以當(dāng)一個備忘錄吧,方便以后翻閱!
參考資料:http://m.survivalescaperooms.com/lanxuezaipiao/p/3291641.html
http://blog.csdn.net/hehainan_86/article/details/28621989
新聞熱點(diǎn)
疑難解答
圖片精選