Java实现WebServices不需要Web 应用服务器
近日来,在社区内浏览了一部分关于Java来实现WebServives的帖子,发现其中90%以上都有这样一步操作
首先在进行webservice 一定要下载Axis安装包。。。
将某某文件配置到%TOMCAT_HOME%\webapps\axis\WEB-INF。。。
然后在web.xml 加上。。。
实际上这种做法本身没有错,但是却扼杀了WebServices的诸多优点。那么让我们从头了解一下什么是WebServices吧。
百度百科中写道:
Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web
应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。
Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
在构建和使用Web Service时,主要用到以下几个关键的技术和规则:
1.XML:描述数据的标准方法.
2.SOAP:表示信息交换的协议.
3.WSDL:Web服务描述语言.
4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。 实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
长项一:跨防火墙的通信
长项二:应用程序集成
长项三:B2B的集成
回到标题我所说的,WebServices真的一定必须要什么Jar包吗?需要插件么?实际上webservice实现有多种方式比如最常用的有axis框架,xfire框架,通过该框架可以发布wsdl接口,也可以实现webservice客户端,目前eclipse都有集成的插件,可以根据wsdl文件生成webservice客户端调用接口,但是这样部署的时候必须依赖框架的jar包,有时候可能因为环境等等原因,我们仅仅需要wsdl中的某一个接口,这时候可以通过http接口或socket接口直接发生xml数据,来调用服务端webservice服务,其实webservice底层还是发送xml数据,只是框架封装了对xml数据进行序列化与反序列化操作,下面以两个简单的例子说明http方式和socket方式。
第一个例子:http实现webservice接口调用例子:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class HttpPostTest {
void testPost(String urlStr) {
try {
URL url = new URL(urlStr);
URLConnection con = url.openConnection();
con.setDoOutput(true);
con.setRequestProperty("Pragma:", "no-cache");
con.setRequestProperty("Cache-Control", "no-cache");
con.setRequestProperty("Content-Type", "text/xml");
OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
String xmlInfo = getXmlInfo();
out.write(new String(xmlInfo));
out.flush();
out.close();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line = "";
StringBuffer buf = new StringBuffer();
for (line = br.readLine(); line != null; line = br.readLine()) {
buf.append(new String(line.getBytes(),"UTF-8"));
}
System.out.println(buf.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private String getXmlInfo() {
// 通过wsdl文件可以查看接口xml格式数据,构造调用接口xml数据
String xml = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
+ "<SOAP-ENV:Body>"
+ "<m:getItemDetailSingle xmlns:m=\"http:xxxxxxxxxxxxxxxxxx/\">"
+ "<itemMo>"
+ "<category>政务域名</category>"
+ "<city>北京西坝河北里</city>"
+ "<flag>3</flag>"
+ "<itemId>10</itemId>"
+ "<itemIndex>22</itemIndex>"
+ "<keyword>朝阳区</keyword>"
+ "<mobile>139-0111-1111</mobile>"
+ "<password>iteyePl</password>"
+ "<userName>hwak</userName>"
+ "</itemMo>"
+ "</m:getItemDetailSingle>"
+ "</SOAP-ENV:Body>"
+ "</SOAP-ENV:Envelope>";
return xml;
}
public static void main(String[] args) throws UnsupportedEncodingException {
String url = "http://localhost:9999/dataService/services/Job";
new HttpPostTest().testPost(url);
}
}</PRE>
第二个例子:socke方式实现例子:
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class WebServiceClient {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("localhost",9003);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
//System.out.println(socket.isConnected());
String httpSend = "POST /dataService/services/Job HTTP/1.1\r\n"
+ "Content-Type:text/xml\r\n"
+ "Host:localhost:9003\r\n"
+ "Content-Length:1024\r\n"
+ "\r\n"
+ "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
+ "<SOAP-ENV:Body>"
+ "<m:getItemDetailSingle xmlns:m=\"http://localhost/\">"
+ "<itemMo>"
+ "<category>工厂类</category>"
+ "<city>北京</city>"
+ "<flag>1</flag>"
+ "<itemId>0</itemId>"
+ "<itemIndex>1</itemIndex>"
+ "<keyword>String</keyword>"
+ "<mobile>2147483647</mobile>"
+ "<password>123456</password>"
+ "<userName>sohu</userName>"
+ "</itemMo>"
+ "</m:getItemDetailSingle>"
+ "</SOAP-ENV:Body>"
+ "</SOAP-ENV:Envelope>";
os.write(httpSend.getBytes());
os.flush();
InputStreamReader ireader = new InputStreamReader(is);
java.io.BufferedReader breader = new java.io.BufferedReader(ireader);
String responseLine = "";
while((responseLine = breader.readLine()) != null)
{
System.out.println(new String(responseLine.getBytes(),"UTF-8"));
}
System.out.println("");
}}
以上两个例子我们可以看出,Java来实现WebServices的时候Web应用服务器不是必须的,希望各位同学能够因地制宜好好的利用WebServices所提供的各种优势,我们要不仅会做,还要善于做!
分享到:
相关推荐
**Java Web Services 实现步骤** 1. **定义服务接口**:使用 JAX-WS 的 @WebService 注解定义服务接口和方法。 2. **实现服务**:创建服务类实现接口,提供具体的功能。 3. **部署服务**:将服务打包成 WAR 文件并...
《Java™ Web Services 教程》是一本指导开发者使用 Java Web Services Developer Pack(Java WSDP)开发 Web 应用程序的专业指南。该教程由 Sun Microsystems 公司在 2005 年发布,针对的是 Java Web Services ...
在Java编程语言中,访问Web Services接口是一项常见的任务,特别是在构建Android应用时,因为Web Services提供了数据交换和远程调用功能。本实例将探讨如何在Java中实现这一过程,特别适用于Android开发。以下是一个...
首先,了解Java Web Services的基础,我们需要知道SOAP,它是用于在分布式环境中交换结构化和类型化信息的协议。SOAP消息通常以XML格式封装,可以承载任何类型的数据,并通过HTTP或SMTP等传输协议发送。在Java中,...
这意味着服务器不存储任何关于客户端会话的信息。 2. **统一接口**:RESTful API遵循一组统一的接口规则,主要包括四种HTTP方法:GET(查询)、POST(创建)、PUT(更新)和DELETE(删除)。这些方法对应于CRUD...
Java应用需要正确设置这些认证信息才能成功连接到Exchange服务器。 4. **EWS操作**: EWS定义了一系列的操作,如FindItem、GetItem、CreateItem等,用于检索、创建、更新和删除Exchange对象。例如,`FindItem`用于...
Java RESTful Web Services是开发现代Web应用程序的一种常见方式,它基于Representational State Transfer(REST)架构原则,提供了轻量级、高效且易于使用的接口。在本文中,我们将深入探讨如何分三步轻松实现Java ...
在Java中,通常使用JAX-WS(Java API for XML Web Services)或JAX-RS(Java API for RESTful Web Services)来实现Web服务。 **2. MyEclipse 8.6支持** MyEclipse是Eclipse IDE的扩展,特别适合Java EE项目的开发...
为了创建独立 Web Services 应用程序,需要使用 Eclipse 和 Java SE 6。首先,需要安装 Java SE 6 和 Eclipse IDE。然后,创建一个新的 Java 项目,并添加必要的库和依赖项。接着,使用 Eclipse 的 Web Services ...
对于创建Web服务,JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)是两个主要的API。 JAX-WS是用于构建SOAP-based Web服务的Java标准,它简化了服务端点(SEI,Service ...
《Java Web Services: Up and Running》是一本专为开发者深入理解并实践Java Web服务技术而编写的指南。这本书详尽地介绍了如何构建、部署和运行Java Web服务,旨在帮助读者快速掌握这一领域的核心概念和技术。 ...
Java 6实现Web服务(Webservices)是一个重要的IT技术话题,它涉及到企业级应用程序之间的数据交换和通信。Web服务通常使用XML(eXtensible Markup Language)进行数据表示,并通过SOAP(Simple Object Access ...
在本项目"JAVA SWing 实现C/S模式的数据库编程及WebServices 调用实现"中,开发者可能已经创建了一个Java Swing应用程序,该应用具有用户界面,允许用户进行数据操作。这些操作可能包括添加、删除、更新数据库记录。...
本文介绍了一种基于WebServices架构的LBS解决方案,利用Java技术(包括客户端的J2ME和服务器端的J2EE)实现移动位置服务。该方案通过HTTP协议和WebServices技术进行信息传输和交换,实现了个人手机终端的位置服务...
【标题】"XFire_demo.zip_XFire_demo_java webservices_webservices_xfire dem" 提供了一个基于XFire的Java Web服务实现示例,这是一份关于如何使用XFire框架创建和部署Web服务的教程。 【描述】"webservices实现...
### 用Java调用WebServices的三种方式 随着互联网技术的发展与成熟,WebServices作为一种标准的、跨平台的、基于XML的信息交换模式被广泛应用。在Java领域,调用WebServices通常涉及遵循一定的技术规范和标准。本文...
- **Jersey's JAX-RS**:基于Java API for RESTful Web Services (JAX-RS) 的开源实现,提供了丰富的API来构建RESTful服务。 - **Restlet's Lightweight REST**:一个轻量级的REST客户端和服务端框架,适用于构建...
本教程将深入探讨这个主题,讲解如何利用Java 6的标准API,如JAX-WS(Java API for XML Web Services),来实现这一目标。 首先,我们要理解Web服务的基本概念。Web服务是一种基于互联网的软件应用程序,它能够通过...
Web服务是一种基于网络的、平台无关的交互方式,允许不同系统之间进行数据交换。在Java中,XFire是一个流行的框架,用于快速开发和部署Web服务。...实践中的应用需要根据具体项目需求选择合适的框架和技术栈。