javawebservice源碼
⑴ java webservice生成的客戶端代碼 需要哪些jar包
1、安裝環境 J2SE SDK 1.4,Tomcat 5.0,eclipse 3.2。
2、下載Axis安裝包。
3、將Axis相關包文件放在WEB-INF\lib目錄下。
4、Axis可選的包:activation.jar; mail.jar; xmlsec-1.4.Beta1.jar拷貝到WEB-INF目錄下,生成客戶端時候需要使用。
Axis支持三種web service的部署和開發,分別為:
1、Dynamic Invocation Interface (DII)
2、Dynamic Proxy方式
3、Stubs方式
建議我們使用Stubs方式,因此我就主要就介紹一下第三種方式。
注意,Java源代碼是放在D:\workspace\test\目錄下,Axis相關包文件放在D:\workspace\test\WEB-INF目錄下。
⑵ 發布webservice,java類初始化問題
發布成webservice後,我發現,不管是調用其中的get,set,方法,構造函數都要被調用一次,而且每次get,set里列印的地址也不一樣,怎麼能使得set以後,能get到set的字元串呢?謝謝
這說明每次你調用webservice都會實例化一個Test對象
所以你第二次get調用時 也會觸發構造方法 也就是說這時候的Test已經是一個新的實體類了和你set的時候不是一個對象了
你的需求用一般的servlet就行了 每次用戶通過你開發servlet開遠程式控制制socket伺服器
⑶ java調用webservice例子
現在大多數項目都會用到spring,所以選擇 CXF 框架,cxf能很好的和spring結合
在官網下載最新版 xcf 3.0.3 網站 http://cxf.apache.org/
MyEclipse項目結構圖
結構圖中各個文件源碼
HelloWorldImpl.java
---------
import javax.jws.WebService;
@WebService(endpointInterface = "IHelloWorld", serviceName = "HelloWorld")
public class HelloWorldImpl implements IHelloWorld {
@Override
public String sayHello(String text) {
return "serviceSay: " + text;
}
}
------------------------------------------------------------------------------------------------
IHelloWorld.java
---------
import javax.jws.WebService;
@WebService
public interface IHelloWorld {
public String sayHello(String text);
}
------------------------------------------------------------------------------------------------
Test.java
---------
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
public class Test {
public static void main(String[] args) throws Exception {
DynamicClientFactory dcf = DynamicClientFactory.newInstance();
Client c = dcf.createClient("http://localhost:8080/cxf/ws/hwUrl?wsdl");
Object[] param = new Object[] { "----test....." };
Object[] result = c.invoke("sayHello", param);
System.out.println(result[0].toString());
}
}
------------------------------------------------------------------------------------------------
cxf-servlet.xml
-----------------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<jaxws:server id="hwService" serviceClass="IHelloWorld"
address="/hwUrl">
<jaxws:serviceBean>
<bean class="HelloWorldImpl" />
</jaxws:serviceBean>
</jaxws:server>
</beans>
------------------------------------------------------------------------------------------------
web.xml
---------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>cxfS</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxfS</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
------------------------------------------------------------------------------------------------
部署項目,然後運行Test.java
在瀏覽器裡面輸入http://localhost:8080/cxf/ws/hwUrl?wsdl 可查看webservice服務介面信息
⑷ 用JAVA做webservice介面原代碼
建議你用新標准開發:jaxws
可以下載 jaxws-ri (標准參考實現),裡面有很完備的例子。
另外,你可以用Apache CXF做為運行容器。
⑸ C# 調用java webservice 介面
C#調用WEBSERVICE
只要在項目中添加WEBSERVICE引用就行了.
輸入網址.很簡單的
document對象
序列化 和 反序列化
JAVA C# 那個參數都用文本傳遞接受
⑹ 誰有Java開發webservice 的完整實例參考一下,謝謝啦!
java實現webservice實例
文章分類:Java編程
今天下午突然想研究下WEBSERVICE,從網上找了好多實例,但很多寫的讓人實在難以恭維,花了三個小時的圈圈轉後總算搞通了,其實也挺簡單的,這里特別感謝http://www.liuzm.com/article/java/992.htm這篇文章,總算讓我弄明白了,現在貼出我的實例步驟,感謝那個博主的同時,與大家共同分享。
一:
首先創建個WEB工程,然後: http://ws.Apache.org/axis/網站下載Axis安裝包.當然還依賴其他包的,我這里在附件里上傳了所有應用到得包,方便大家。
二:
然後就寫wsdd 文件(注:其實這里真的不用,可以跳過第二步)為了生成這個文件:server-config.wsdd
deploy.wsdd:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="" target="_blank">http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorld" provider="java:RPC">
<parameter name="className" value="HelloWorld"/>
<parameter name="allowedMethods" value="sayHello"/>
</service>
</deployment>
在DOS下轉換目錄到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
三:
可以自己寫第二步中的文件,代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<globalConfiguration>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="disablePrettyXML" value="true"/>
<parameter name="dotNetSoapEncFix" value="true"/>
<parameter name="" value="false"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
</globalConfiguration>
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
<service name="Login.jws" provider="java:RPC">
<parameter name="className" value="server.SayHello"/>
<parameter name="scope" value="request"/>
<parameter name="allowedMethods" value="*"/>
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
</requestFlow>
</transport>
</deployment>
放到 WEB-INF 目錄下 和web.xml一起,其中,WEB.XML可以直接從你下載的axis項目中拿來到自己工程就好,或者自己添加:
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
四:
服務端提供的方法:
package server;
public class SayHello {
public String getName(String name) {
return "hello====>" + name;
}
}
五:
客戶端訪問服務端介面獲得數據的方法:
package client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class TestClient {
public static void main(String[] args) throws Exception {
// 指出service所在URL
String endpoint = "http://127.0.0.1:8082/webservice/services/Login.jws";
// 創建一個服務(service)調用(call)
Service service = new Service();
Call call = (Call) service.createCall();// 通過service創建call對象
// 設置service所在URL
call.setTargetEndpointAddress(new java.net.URL(endpoint));
// 方法名(processService)與MyService.java方法名保持一致
call.setOperationName("getName");
// Object 數組封裝了參數,參數為"This is Test!",調用processService(String arg)
String ret = (String) call.invoke(new Object[] { "繼中" });
System.out.println(ret);
}
}
六:啟動tomcat,先訪問http://127.0.0.1:8082/webservice/services,看是否有方法顯示,有顯示,則代表服務端提供的介面可以成功訪問了。
我的效果是這樣:
And now... Some Services
•Login.jws (wsdl)
◦getName
七:
然後在本地跑客戶端TestClient,就應該有結果啦,大家試試吧。
需要lib.jar可以到這里找http://yangjizhong.javaeye.com/blog/579511
⑺ java 項目怎麼調用.net寫的webService,求源碼。
發布.net webservice得到wsdl地址:(你的)http://222.92.47.171:8003/SZDataExchange/SZDataExchange.asmx?wsdl
根據wsdl2java工具包生成對應java客戶端
publicstaticvoidmain(String[]args)throwsServiceException,RemoteException{
//TODOAuto-generatedmethodstub
Service1_Service1=newService1Locator();
Service1Soap_PortType_Service1Soap_PortType;
StringresultStr=null;
_Service1Soap_PortType=_Service1.getService1Soap();
resultStr=_Service1Soap_PortType.helloWorld("zybaby");
System.out.println(resultStr);
}
⑻ java webservice例子,例子完整,最好有注釋,demo也行!但是一定要完整!謝謝!
剛好 我這兩天也在學webservice,給你一個我才學的例子
1.解壓axis壓縮包,然後解壓,取出裡面的webapps裡面的axis項目放到tomcat中的webapps中,然後啟動tomcat
項目的發布有兩種形式
1.即時發布
直接在axis中放置java源文件,注意後綴名字改為.jws.注意源文件中不要有任何的導包語句
詳細步驟如下
1.直接在axis目錄下編寫java源文件,寫好後把後綴名改為jws。如Demo.jws
2.重啟動伺服器,在瀏覽器中輸入http://127.0.0.1:8080/axis/Demo.jws,點開後得到一個網址http://127.0.0.1:8080/axis/Demo.jws?wsdl
3.在myeclipse中導入網址http://127.0.0.1:8080/axis/Demo.jws?wsdl,可以執行裡面的方法就可以了。
2.定製發布
編寫要發布為伺服器javaBean
編寫生成class文件放在tomcat中的axis中的webinf中的classes中
編寫deploy.wsdd文件描述伺服器的名稱入口等信息。
詳細步驟
以一個add為例子
1.編寫javaBean代碼
public class add {
public Integer getAdd(Integer a, Integer b){
return a+b;
}
}
2.將class文件放入axis中的webinf下的classes中
注意,如果該類有包的話,就要建立相應的文件名,如
package com.ssh.webservice
那麼classes文件下就要有相應的com文件夾,ssh文件夾,webservice文件夾
3.寫上他的描述文件wsdd文件
描述文件直接放到classes中即可,名字為deploy.wsdd,文件為
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Add" provider="java:RPC">
list中顯示的名字
<parameter name="className" value="add"/>
調用的類
<parameter name="allowedMethods" value="*"/>
指定調用的方法
</service>
</deployment>
4.編寫批處理文件.bat文件,如下
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\axis.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\axis-ant.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\jaxrpc.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\saaj.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\libwsdl4j-1.5.1.jar
java org.apache.axis.client.AdminClient E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\classes\deploy.wsdd
然後運行該批處理文件
5.啟動伺服器,在瀏覽器中輸入項目的發布地址,如http://127.0.0.1:8080/axis/就會有已個list,然後點進方法
6.編寫客戶端代碼,如下
package com.ssh.client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestClient
{
public static void main(String [] args) {
try {
String endpoint =
"http://127.0.0.1:8080/axis/services/Test01";
這個地址是值xml文件中的最後一行的local地址
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("getMessage") );
指定調用的方法
String ret = (String) call.invoke( new Object[] { } );
如果有參數需要傳入的話直接在括弧裡面寫上1,2,2等
System.out.println(ret);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
我這里還有webservice的教學視屏,要的話說一聲
⑼ Java調WebService完整的實例
首先, 你要先把你的WS服務啟動起來,就是http://localhost:8080/Example/services/HelloWorldService?wsdl
然後在你的另一個項目中建一個Webservice Client 客戶端,用來訪問你的WS服務。
建立Webservice Client 方法如下,在Eclipses中建立一個java工程,然後在src上右鍵--NEW---Other---Web Service Client --Xfire--在WsdL url 中寫上http://localhost:8080/Example/services/HelloWorldService?wsdl-----下一步結束。
在src里的會出現一些java文件,你找一個以Client結束的java文件,在裡面的main方法中會有個service對象,現在你就可以直接用這個對象了,service.peerstatus(參數)這樣寫就行了。
純手打啊,希望能對你有幫助。
⑽ c++如何與java進行交互 使用webservice形式。發我一個源碼吧。或者給我講一下其中的思路,以及使用的工具
使用JNI!不管什麼樣的應用都可以(如果是Android的話需要在Linux下),java中可以直接調用c中的方法,不需要其他工具,有eclipse和vc就可以,去了解一下,步驟也不難。