『壹』 如何在java web 裡面使用webservice技術
一、利用jdk web服務api實現,這里使用基於 SOAP message 的 Web 服務
1.首先建立一個Web services EndPoint:
package Hello;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;
@WebService
public class Hello {
@WebMethod
public String hello(String name) {
return "Hello, " + name + "\n";
}
public static void main(String[] args) {
// create and publish an endpoint
Hello hello = new Hello();
Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);
}
}
2.使用 apt 編譯 Hello.java(例:apt -d [存放編譯後的文件目錄] Hello.java ) ,會生成 jaws目錄
3.使用java Hello.Hello運行,然後將瀏覽器指向http://localhost:8080/hello?wsdl就會出現下列顯示
4.使用wsimport 生成客戶端
使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl
這時,會在當前目錄中生成如下文件:
5.客戶端程序:
1class HelloClient{
2public static void main(String args[]) {
3 HelloService service = new HelloService();
4 Hello helloProxy = service.getHelloPort();
5 String hello = helloProxy.hello("你好");
6 System.out.println(hello);
7 }
8}
9
以上方法還稍顯繁瑣,還有更加簡單的方法
二、使用xfire,我這里使用的是myeclipse集成的xfire進行測試的
利用xfire開發WebService,可以有三種方法:
1一種是從javabean 中生成;
2 一種是從wsdl文件中生成;
3 還有一種是自己建立webservice
步驟如下:
用myeclipse建立webservice工程,目錄結構如下:
首先建立webservice介面,
代碼如下:
1package com.myeclipse.wsExample;
2//Generated by MyEclipse
3
4public interface IHelloWorldService {
5
6 public String example(String message);
7
8}
接著實現這個借口:
1package com.myeclipse.wsExample;
2//Generated by MyEclipse
3
4public class HelloWorldServiceImpl implements IHelloWorldService {
5
6 public String example(String message) {
7 return message;
8 }
9
10}
修改service.xml 文件,加入以下代碼:
1<service>
2 <name>HelloWorldService</name>
3 <serviceClass>
4 com.myeclipse.wsExample.IHelloWorldService
5 </serviceClass>
6 <implementationClass>
7 com.myeclipse.wsExample.HelloWorldServiceImpl
8 </implementationClass>
9 <style>wrapped</style>
10 <use>literal</use>
11 <scope>application</scope>
12 </service>
把整個項目部署到tomcat伺服器中 ,打開瀏覽器,輸入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:
然後再展開HelloWorldService後面的wsdl可以看到:
客戶端實現如下:
1package com.myeclipse.wsExample.client;
2
3import java.net.MalformedURLException;
4import java.net.URL;
5
6import org.codehaus.xfire.XFireFactory;
7import org.codehaus.xfire.client.Client;
8import org.codehaus.xfire.client.XFireProxyFactory;
9import org.codehaus.xfire.service.Service;
10import org.codehaus.xfire.service.binding.ObjectServiceFactory;
11
12import com.myeclipse.wsExample.IHelloWorldService;
13
14public class HelloWorldClient {
15public static void main(String[] args) throws MalformedURLException, Exception {
16// TODO Auto-generated method stub
17Service s=new ObjectServiceFactory().create(IHelloWorldService.class);
18XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
19String url="http://localhost:8989/HelloWorld/services/HelloWorldService";
20
21 try
22 {
23
24 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);
25 String st=hs.example("zhangjin");
26 System.out.print(st);
27 }
28 catch(Exception e)
29 {
30 e.printStackTrace();
31 }
32 }
33
34}
35
這里再說點題外話,有時候我們知道一個wsdl地址,比如想用java客戶端引用.net 做得webservice,使用myeclipse引用,但是卻出現無法通過驗證的錯誤,這時我們可以直接在類中引用,步驟如下:
1public static void main(String[] args) throws MalformedURLException, Exception {
2 // TODO Auto-generated method stub
3 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);
4 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
5
6
7//遠程調用.net開發的webservice
8Client c=new Client(new URL("http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl"));
9 Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});
10
11//調用.net本機開發的webservice
12Client c1=new Client(new URL("http://localhost/zj/Service.asmx?wsdl"));
13Object[] o1=c1.invoke("HelloWorld",new String[]{});
14
15}
『貳』 jdk發布webservice為什麼不用tomcat
因為很多Java應用都不是web應用啊。很多服務都是在EJB容器或者是獨立的應用程序中運行的。就不需要tomcat,干什麼要用沒用的tomcat發布。
『叄』 JAVA程序中安裝完JDK6.0後想要運行web程序,求jdk的配置方式,哪位JAVA高手可以告訴下
先安裝jdk,設置好環境變數,主要是兩個:path和JAVA_HOME
path=......;C:\Program Files\Java\jdk1.6.0_16\bin;
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_16
下載個tomcat,解壓版的就可以,網址我給你,http://apache.org 因為web程序必須是在tomcat等容器里才能運行起來。
『肆』 java 開發android 的jdk和web應用開發 有什麼區別嗎
開發有區別,android除了語言用JAVA外其他沒有和JAVA WEB開發一樣的東西。
重裝不需要
『伍』 jdk自帶的web容器具體放在機器的哪個文件下
JDK 沒有自帶的
可以用tomcat
『陸』 javaweb的問題與JDK配置有關···
還需要添加j2ee所用的jar包.
『柒』 jdk自帶的webservice生成客戶端怎麼使用
在生成的源代碼中有一個JAVA文件是XXXProxy.java,這個是類包含webservice的全部方法,你編寫一個類去實例化這個對象,然後調用對應的方法就可以了。
『捌』 jdk 內置的 webservice 怎麼樣
JDK1.6中自帶了webservice的功能,因為集成了JAX-WS,這非常方便,不用再用第三方包來開發了。
下面我們開始構建:
1,先用Eclipse建立一個動態網站,注意需要生成web.xml,建工程的時候不要忘記勾選;
2,建立類實現Web Services介面,下面是一個簡單定義Web Services介面的實現類:
代碼
1 package javaWebServiceTest;
2
3 import javax.jws.WebMethod;
4 import javax.jws.WebParam;
5 import javax.jws.WebResult;
6 import javax.jws.WebService;
7 import javax.jws.WebParam.Mode;
8 import javax.jws.soap.SOAPBinding;
9 import javax.jws.soap.SOAPBinding.Style;
10 import javax.jws.soap.SOAPBinding.Use;
11
12 import webServiceInterface.Person;
13
14 @WebService(name="SayHello", portName="SayHellowServicePort", serviceName="SayHelloServiceName",
15 targetNamespace="http://www.webservice.com")
16 @SOAPBinding(style = Style.RPC,use = Use.LITERAL)
17 public class ChService {
18
19 @WebMethod(action="sayHello", operationName="saySomeWord")
20 @WebResult(name="Person", partName="PersonName")
『玖』 java介面問題。用webseevice的jdk web 方式實現,緊接著發布,然後能在另一台電腦
這個是項目部署問題,你部署的環境沒有映射到外網吧。