`

jdk1.6发布webservice

阅读更多
测试环境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/...相关文件
分享到:
评论
2 楼 antlove 2013-08-14  
zhangjialu_vip 写道
请问在web工程里面发布的时候,怎么可以与工程发布共同使用一个端口号呀,现在websevice与工程的端口存在混乱,有时候,工程访问一个数据会找不到。

如果要使用同一个端口号,那只能手动设置了。
1 楼 zhangjialu_vip 2013-08-11  
请问在web工程里面发布的时候,怎么可以与工程发布共同使用一个端口号呀,现在websevice与工程的端口存在混乱,有时候,工程访问一个数据会找不到。

相关推荐

    JDK1.6支持WebService

    在JDK 1.6中,开发者可以利用JAX-WS轻松地创建服务提供者接口(SPI),并自动生成客户端存根代码,从而实现服务的发布和调用。 3. **Java Architecture for XML Binding (JAXB)**:JAXB是Java中用来将XML数据与Java...

    JAVA1.6的WebService支持.pdf

    ### JAVA1.6的WebService支持详解 #### 一、引言 随着企业级应用的不断发展,服务导向架构(SOA, Service-Oriented Architecture)逐渐成为软件设计与开发领域的重要概念。SOA通过定义一系列标准的服务接口,使得不同...

    jdk6 开发webservice

    JDK 6引入了JAX-WS(Java API for XML Web Services),它是一个标准的、基于注解的框架,简化了Web Service的开发流程。以下是对标题和描述中涉及的知识点的详细说明: 1. **JAX-WS**: JAX-WS是Java平台的一个核心...

    JDK1.6新特性说明.doc

    JDK 1.6引入了许多新特性,显著提高了Java开发的效率和灵活性。以下是对这些特性的详细解释: 1. **Web服务元数据** (JSR 181): 这一特性允许开发者使用注解(Annotation)来声明Web服务的方法、参数和返回值,简化...

    jdk开发webservice

    jdk6下开发webservice示例,JDK1.6 自带webservice构建,jdk6原生态webservice

    web服务开发 使用jdk6注解 注解分析

    在 JDK 1.6 版本中,注解的引入极大地简化了 Web 服务的开发,使得开发者能够更高效地创建、部署和管理 Web 服务。 `@WebService` 是 Java Web Services (JAX-WS) 中的一个核心注解,用于声明一个类或接口作为 Web ...

    基于JDK自带的Web服务JAX-WS实现WebService的简单示例

    Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包...还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK环境要求1.6及以上版本。

    使用JAX-WS(JWS)发布WebService

    (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在service接口和实现类添加“@SOAPBinding(style = SOAPBinding.Style.RPC)”注解; 访问受限,...

    webservice接口调用demo(含jar包和调用代码)

    而"jdk版本必须大于1.6"则意味着该项目依赖于Java Development Kit的特定版本,因为CXF通常需要JDK 1.6或更高版本以提供其功能。 在实际操作中,首先你需要确保安装了符合要求的JDK并配置好环境变量。接着,为了...

    发布webService服务接口与spring整合教程

    5. **注意兼容性**:根据描述,本教程适用于JDK 1.6或更高版本。请确保你的开发环境和目标运行环境都满足这个要求。 在提供的压缩包文件“webService服务接口方案”中,可能包含了具体的代码示例、配置文件和其他...

    供菜系统基本开发

    android SDK(4.0以上) + jdk1.6 下载adt-bundle-windows-x86_64-20131030.zip 64bit机器 APP英文名:FoodSupply 32bit另有相应版本 APP包名:com.stsol.foodsupply APP数据库名...

    java webservice服务端及客户端简单示例

    在JDK1.6版本以后,在<JAVA_HOME>/bin目录下有一个wsimport.exe工具,该工具可以根据wsdl文件自动生成webservice接口调用的java客户端代码,十分方便。而自己仅需要写一个测试类。 使用过程如下: 1. 获取...

    eclipse+CXF开发webService

    在开发webService之前,需要安装相关的软件环境,包括windowXP、eclipse3.7、tomcat7、jdk1.6和CXF2.4.3等。首先,需要从eclipse官方网站下载eclipse的安装包,并解压缩。然后,从apache官网下载CXF插件,包括apache...

    解决jdk1.7 不支持TLS1.2的问题

    NULL 博文链接:https://ligaosong.iteye.com/blog/2356346

    第三次实验1

    实验“第三次实验1”主要涉及Web Service的开发,特别是基于JAX_WS包和JDK1.6+版本的实现。Web Service是一种通过网络提供服务的方式,它基于开放标准,允许不同系统之间的数据交换。本实验的目标是理解Web Service...

    CXF webservice 验证码接口

    使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。

    java编写webservice实例

    3. **JDK1.6**: Java Development Kit (JDK) 是Java开发的必备工具集,包括Java编译器、JRE(Java Runtime Environment)以及各种开发工具。JDK1.6是本教程中使用的Java版本,支持Java Web Service的开发。 4. **...

    WebService的几种不同实现方式

    3. JAX-RS(Java API for RESTful Web Services):JAX-RS是为REST风格的Web服务制定的规范,它较晚推出,并且不随JDK1.6一起发行,需要单独下载。JAX-RS的目标是简化Web服务的构建过程。 Apache CXF是实现上述规范...

    webservice下对json文件的操作

    然后,将WebService接口和实现添加到该项目,并配置服务发布。 4. **生成WSDL**:JAX-WS会自动生成一个WSDL(Web Services Description Language)文件,该文件描述了服务的接口和操作,客户端可以使用它来调用服务...

Global site tag (gtag.js) - Google Analytics