我想用java做一个web services。请问该怎么做?

悬赏:10 发布时间:2008-07-24 提问人:kamet521 (初级程序员)

我想用java做一个web services。请问该怎么做?

给点提示。。。谢谢。。。

我好像知道个Axis。但是看了看好像不怎么.好..请问还有什么其他的好办法写web services么?

采纳的答案

2008-07-24 pany (初级程序员)

用axis开发 很简单的主要就是一份wsdd文件
例如server-config.wsdd

<service name="WebService" provider="java:RPC" style="rpc" use="encoded">
        <parameter name="scope" value="Request"/>
        <parameter name="className" value="com.dreamtech.webService.WebService"/><!-- 要发布的方法全在这个类里 -->
        <parameter name="allowedMethods" value="*"/> 				
    </service>


要发布的webService类的方法

package com.dreamtech.webService;

import javax.xml.rpc.ServiceException;

import clients.WebServiceService;
import clients.WebServiceServiceLocator;
import clients.WebService_PortType;

import com.dreamtech.bo.Equipment;
import com.dreamtech.dao.Dao;

public class WebService {
	//初次刷卡时 写入数据 并返回状态
	public String save(String uId, String equipmentId){
		String state = null;
		Dao dao = Dao.getDaoInstance();		
		Equipment em = new Equipment();
		em.setEquipmentId(equipmentId);
		em.setUid(uId);
		em.setState("0");
		try {
			dao.saveObject(em);
			em = (Equipment)dao.findSingleObj("from Equipment e where e.uid='"+uId+"' and e.equipmentId='"+equipmentId+"'");
			state = em.getState();
			return state;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "数据不存在,请联系管理员";
	}
	
	//离开时 更新数据 并返回状态
	public String updateState(String uId, String equipmentId){
		Dao dao = Dao.getDaoInstance();		
		String state = null;
		Equipment em = new Equipment();
		try {
			em = (Equipment)dao.findSingleObj("from Equipment e where e.uid='"+uId+"' and e.equipmentId='"+equipmentId+"'");
			em.setState("1");
			dao.updateObject(em);
			em = (Equipment)dao.findSingleObj("from Equipment e where e.uid='"+uId+"' and e.equipmentId='"+equipmentId+"'");
			state = em.getState();
			return state;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "数据不存在,请联系管理员";
	}

在web.xml里加入
<servlet>
	<servlet-name>AxisServlet</servlet-name>
		<servlet-class>
		org.apache.axis.transport.http.AxisServlet</servlet-class>
	</servlet>
		<servlet>		 
		<servlet-name>AdminServlet</servlet-name>
		<servlet-class>
		org.apache.axis.transport.http.AdminServlet</servlet-class>
		<load-on-startup>100</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/servlet/AxisServlet</url-pattern>
	</servlet-mapping>	
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>*.jws</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>

如果还不行 就加我QQ 258401808

提问者对于答案的评价:
ty

其他回答

axis是一个
如果你用spring的话可以考虑使用xfire

javaeye上有一个系列,好像是叫手把手教你用axis,可以先试一下
blurm (初级程序员) 2008-07-24
其实实现用什么倒无所谓

主流的两大开发平台  axis  和 xfire

看看例子就知道基本的开发了

我也刚开发完一个webservice 使用xfire 因为我用myeclipse  自带的,

东西建的方面就用了

一开始也是一头雾水,不知道这个soap协议怎么调用,用户有那些论证机制保证安全,

客户端怎么写等等诸多问题。

一步一步来吧,其实最主要的还是对你提供的服务接口的业务抽象比较重要。

技术顶多多google一下,基本都能解决。
jackey3316 (初级程序员) 2008-07-24
推荐你一篇文章:Apache CXF 简介

本教程介绍了Apache CXF 服务框架的基本知识,并通过讲解自带的例子来初步体验通过CXF 进行服务的发布与消费;然后搭建基于Eclipse 的Apache CXF 开发

http://www.ibm.com/developerworks/cn/edu/j-dw-java-cxf.html
YuLimin (初级程序员) 2008-07-24
如果你有WSAD的话,开发一个webservice那实在是太简单了,傻瓜式的过程。
wsad让你可以选择采用IBM的方式来开发webservcie,也可以采用axis的方式来开发webservice。
johnnyhg (初级程序员) 2008-07-25
单纯的利用某个框架写个例子真就是傻瓜式的开了.但是,如果要根据项目需求实现一套webservice.要考虑的问题还是很多的,必须从原理到基础知识都有一定的理解的基础上去选择要使用的框架.

读懂xml的schame约束
读懂soap
读懂wsdl
了解jax-ws

有了这些可以在选一个框架实现一个简单的webservic.看看框架生成的代码与上述文件的对应关系.然后在做深一步的学习.
yuyue (初级程序员) 2008-07-29