测试环境jdk1.6。
IFruitMgtService.java
package service;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface IFruitMgtService {
public static final String APPLE="apple";
public static final String ORANGE="orange";
public static final String PLUM="plum";
public Double getPrice(String fruitName);
}
FruitMgtServiceImpl.java
package service.impl;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import service.IFruitMgtService;
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class FruitMgtServiceImpl implements IFruitMgtService {
@WebMethod
@Override
public Double getPrice(String fruitName) {
if(APPLE.equals(fruitName)){
return 5d;
}else if(ORANGE.equals(fruitName)){
return 10d;
}else if(PLUM.equals(fruitName)){
return 20d;
}else {
throw new RuntimeException("Sorry,can not calculate the fruit price!");
}
}
}
ClientFactory.java
package util;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import service.IFruitMgtService;
public class ClientFactory extends Service{
private static String NAME_SPACE_URL="http://impl.service/";
private static URL WSDL_DOCUMENT_LOCATION=null;
private static QName serviceName=new
QName(NAME_SPACE_URL,"FruitMgtServiceImplService");
static{
try {
WSDL_DOCUMENT_LOCATION = new
URL("http://localhost:8888/JDK/FruitMgtService?wsdl");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
private static ClientFactory instance=new
ClientFactory(WSDL_DOCUMENT_LOCATION,serviceName);
protected ClientFactory(URL wsdlDocumentLocation, QName serviceName) {
super(wsdlDocumentLocation, serviceName);
}
public static IFruitMgtService getFruitMgtService(){
return instance.getPort(
new QName(NAME_SPACE_URL,"FruitMgtServiceImplPort"),IFruitMgtService.class);
}
}
发布webservice测试代码
JDKServerMain.java
package main;
import service.impl.FruitMgtServiceImpl;
import com.sun.xml.internal.ws.transport.http.server.EndpointImpl;
public class JDKServerMain {
public static void main(String[] args) {
EndpointImpl.publish("http://localhost:8888/JDK/FruitMgtService",
new FruitMgtServiceImpl());
}
}
客户端调用webservice测试代码
JDKClientMain.java
package main;
import service.IFruitMgtService;
import util.ClientFactory;
public class JDKClientMain {
public static void main(String[] args) throws Exception {
IFruitMgtService fruitMgtService= ClientFactory.getFruitMgtService();
System.out.println(fruitMgtService.getPrice(IFruitMgtService.APPLE));
}
}
Note:IFruitMgtService.java和FruitMgtServiceImpl.java中有相同注解@SOAPBinding(style = SOAPBinding.Style.RPC)。注意2处注解的style属性必须相同。这里style都为SOAPBinding.Style.RPC。如果将style设为SOAPBinding.Style.DOCUMENT则还要进行以下处理
1)用dos切换到classes目录启用wsgen
wsgen -wsdl -keep -cp . service.impl.FruitMgtServiceImpl
在classes/service/impl中生成
jaxws/GetPrice.class
jaxws/GetPrice.java
jaxws/GetPriceResponse.class
jaxws/GetPriceResponse.java
将jaxws/GetPrice.java和jaxws/GetPriceResponse.java拷贝到src/service
纠正编译错误
2)修改IFruitMgtService.java。设置WebService注解的targetNamespace属性如下:
@WebService(targetNamespace="http://impl.service/")
再次运行JDKClientMain.java可以成功获得结果。
记注:在接口上和实现类上的注解SOAPBinding的style属性必须一致。
SOAPBinding.Style.DOCUMENT SOAPBinding.Style.RPC区别:
当使用SOAPBinding.Style.RPC时,不需要一些额外处理(如上所述)。同时,如果通过wsgen对SOAPBinding.Style.RPC的Endpoint处理时,不会生成jaxws/...相关文件
当使用SOAPBinding.Style.DOCUMENT时,需要一些额外处理(如上所述)。同时,如果通过wsgen对SOAPBinding.Style.DOCUMENT的Endpoint处理时,会生成jaxws/...相关文件
分享到:
相关推荐
JDK1.6支持WebService dfdddddddddddddddddddddddd
JAVA1.6的WebService支持.pdf
文档描述了通过jdk6开发webservice的例子 生成客户端代码的方法
jdk6下开发webservice示例,JDK1.6 自带webservice构建,jdk6原生态webservice
基于JDK1.6 研发webservice接口 CXF 的包
Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包...还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK环境要求1.6及以上版本。
(此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在service接口和实现类添加“@SOAPBinding(style = SOAPBinding.Style.RPC)”注解; 访问受限,...
用cxf方法调用webService接口和jar包,jdk版本必须大于1.6.
以jdk1.6以上自带的jax-ws来发布webservice,压缩包里包含服务端和客户端,下载导入即可启动运行测试,有疑问的话欢迎咨询哈
android SDK(4.0以上) + jdk1.6 下载adt-bundle-windows-x86_64-20131030.zip 64bit机器 APP英文名:FoodSupply 32bit另有相应版本 APP包名:com.stsol.foodsupply APP数据库名...
在网上找了很久的资料,接口已经跟客户对接,特编写了代码文档和附带jar包,并含其他网站的参考地址,注意jdk环境要1.6或以上版本
使用webservice实现json文件传输,包含压包解包。在jdk1.6,myeclipse10下测试成功.完整源码
NULL 博文链接:https://ligaosong.iteye.com/blog/2356346
在JDK1.6版本以后,在<JAVA_HOME>/bin目录下有一个wsimport.exe工具,该工具可以根据wsdl文件自动生成webservice接口调用的java客户端代码,十分方便。而自己仅需要写一个测试类。 使用过程如下: 1. 获取...
使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。
xfire 在java下的webservice调用 可以下载直接使用 jdk1.6
使用1.6以上版本的jdk就可以直接生成webservice的接口的客户端 java的代码
webServiceTester启动前请安装jdk1.6以上版本,启动后填写 ?wsdl的URL 点击获取会带出需要的参数正常填写启动调用就可以跟断点调试了!
运行环境是TOMCAT 7,JDK 1.6。 将War包复制到Tomcat安装目录下的webapps目录,然后启动Tomcat即可。 启动Tomcat后,会自动解压缩War包,如需更改过滤配置,可以修改 webapps\XssFilter3\WEB-INF\conf\antisamy-...
包含了 axis2 1.7.4版本的war包 也可以自行去 apache官网下载 ,另外还包含一个已经集成了axis2的web工程源码 使用的jdk1.6开发,可以直接把web工程导入到myeclipse,部署到tomcat可运行后,浏览器输入 ...