java创建webservice,java创建数组
如何把一个普通的JAVA类变成一个webService服务
ITjob远标教育
步骤:
1,新建一个普通JAVA类即可。
2,选择这个类,右键。new---other,在对话框中选中MyEclipse下的Web Service,点击next
3,strategy选择 Create webService from Java class (Bottom-up scenario),点击next
4,点击Browse
5,选择刚新建的普通JAVA类,点击OK
6,点击finish
7,项目目录中就会生成一个新的JAVA类
8,至此webService完成。
eclipse 怎样配置java webservice
用eclipse创建一个WebService应用非常方便,步骤如下:
1.安装WebService插件。
2.安装一个web服务器。我这里用的是Tomcat。
3.创建一个Webservice服务。在eclipse中创建一个动态的web工程。New-Project-Dynamic Web Project。创建完成后,写一个service类,比如:
public class LogonService {
public int checkUserRight(String userId, String password) {
//假设进行数据库操作
if (password != null "fred".equals(userId)) {
return 1;
}
return 0;
}
}
public int checkUserRight(String userId, String password)就是我们要调用的远程方法。
4.在这个类的文件名上点击右键,选择”Web Services"-“Create Web Service”,就会出现下面的界面:
要选上TestClient(下面的那个图片上),这样创建Service的同时,会创建一个Service的test工程。
5.点击next,
选择方法名称,
6.点击"next",点击“Start Server”,就会启动Tomcat,并将工程部署上去。
7.如果点击“Launch”会打开刚才创建的WebService的测试界面,可以进行测试。
8.这时候,会出现测试创建代理类的界面,代理类会创建在自动生成的测试工程中,也就是LogonWebServiceTest工程中。
9.点击“next”,会自动生成代理类,并出现选择测试方法的界面。你可以选择相应的方法,这样eclipse会生成相应的页面。
10.点击"Finish"就可以了,这时,会自动启动一个页面
点击左边相应的方法,就可以进行测试了。
注:遇到的问题
执行时报错:D:\MyDrivers\software\apache-tomcat-7.0.50\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
解决方法:把tomcat\bin 目录下的tcnative-1.dll复制到jdk\bin目录下
查看Tomcat是多少位:cmd—cd 目录下—catalina version 就可以查看到
查看JDK是多少位:cmd—java version 下面有显示就是64位,没有就是32位的
怎样新建一个Java的Web Service
服务器端的操作:
1. 创建一个WebService项目。(不需要是Java EE 5.0)
2. 创建包与接口以及实现类。
3. 加上WebService的包
4. 编辑配置文件
5. 部署后在浏览器中测试:http localhost:8080/testWebService/services, 格式是固定的,中间换成项目名即可!
至此,服务器端已完成!以下做的是客户端的调用。
1. 创建客户端项目
2.将服务器端的包复制到客户端(注意,实现类要去掉)
3. 加入WebService包
4. 在Next时, 注意将红框中的勾打上。
6. 在包中创建一个类测试调用外部的WebService是否成功!(注意取地址时应加上webservice的名称)
package com.yenange.service;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class TestWS {
public static void main(String[] args) {
//1.取得WebService的路径
String url="http /localhost:8080/testWebService/services/testWebService";
//2.创建服务
Service service=new ObjectServiceFactory().create(IMyWebService.class);
//3.创建服务代理
XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
//4.调用外部的WebService, 建立对象. 再测试其方法
try {
IMyWebService obj=(IMyWebService)factory.create(service,url);
System.out.println(obj.HelloWorld("leaf"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
至此,java的WebService调用完成!
如何在Java中快速发布WebService服务
1,在Java项目中发布一个WebService服务:
如何发布?
——JDK1.6中JAX-WS规范定义了如何发布一个WebService服务;
(1)用jdk1.6.0_21以后的版本发布;
(2)与Web服务相关的类,都位于Javax.jws.*包中
@WebService——此注解用在类上指定将此类发布成一个WebService;
EndPoint——此类为端点服务类,其中publish()方法用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上,用于发布。
2,例子:
(1)发布WebService服务
HelloWebService.java:
[java]?view plain?copy
span?style="font-family:KaiTi_GB2312;font-size:18px;"package?cn.tgb.ws;
importjavax.jws.WebMethod;
importjavax.jws.WebService;
importjavax.xml.ws.Endpoint;
/**
*??@WebService?-?它是一个注解,用在类上指定将此类发布成一个ws.
Endpoint?–?此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。
*?@author?xuemin
*
*/
@WebService
public?classHelloWebService?{
publicString?HelloWord(String?name){
return"Hello:?"+name;
}
/**
*添加exclude=true后,HelloWord2()方法不会被发布
*?@param?name
*?@return
*/
@WebMethod(exclude=true)
publicString?HelloWord2(String?name){
return"Hello:?"+name;
}
publicstatic?void?main(String[]?args)?{
/**
*参数1:服务的发布地址
*参数2:服务的实现者
*/
Endpoint.publish("",new?HelloWebService());
}
}/span
注:
@WebService-?它是一个注解,用在类上指定将此类发布成一个ws.
Endpoint –此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。
运行以上程序进行发布。
(2)查看wsdl
地址:
只要在客户端浏览器能看到此WSDL文档,说明服务发布成功
以上服务发布成功;
总结:
如何发布一个Web服务:
a,在类上添加@WebService注解
(注:此注解是jdk1.6提供的,位于javax.jws.WebService包中)
b,通过EndPoint(端点服务)发布一个WebService
(注:EndPoint是jdk提供的一个专门用于发布服务的类,该类的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。位于?javax.xml.ws.Endpoint包中)
c,注:
类上添加注解@WebService,类中所有非静态方法都会被发布;
静态方法和final方法不能被发布;
方法上加@WebMentod(exclude=true)后,此方法不被发布;
(3)客户端访问发布的服务
根据WSDL文档来在客户端编写代码,访问发布的服务;
但是,WSDL文档看不懂怎么办?代码该如何编写?
——你看不懂,JDK看得懂,wsimport是JDK自带的,可以根据WSDL文档生成客户端调用代码的工具。无论服务器端WebService使用什么语言编写的,豆浆在客户端生成Java代码。所以服务器用什么语言编写的并不重要。
wsimport.exe命令参数熟知:
-d:生成class文件。默认参数。
-s:生成Java文件
-p:自定义包结构
解析地址生成源码到E盘:
执行以上命令后,即可在E盘下生成如下包及类
注:还可以自定义包结构:
自定义包结构的命令:
将生成的包及.java文件复制到客户端:如下图
创建访问服务的类:MyClient.java:
MyClient.java:
[java]?view plain?copy
span?style="font-family:KaiTi_GB2312;font-size:18px;"package?cn.tgb.ws;
public?classMyClient?{
publicstatic?void?main(String[]?args)?{
HelloWebServiceServicehwss?=?new?HelloWebServiceService();
HelloWebServicehws?=?hwss.getHelloWebServicePort();
Stringresult=hws.helloWord("hanxuemin");
System.out.println(result);
}
}/span