‘壹’ 如何在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 方式实现,紧接着发布,然后能在另一台电脑
这个是项目部署问题,你部署的环境没有映射到外网吧。