近日来,在社区内阅读了一部门关于Java来完成WebServives的帖子,发现此中90%以上都有多么一步支配:
起首在中止webservice 必然要下载Axis安装包。
将某某文件设置配备摆设到%TOMCAT_HOME%webappsaxisWEB-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 Des cription, 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= //schemas.xmlsoap.org/soap/envelope/ xmlns:SOAP-ENC= //schemas.xmlsoap.org/soap/encoding/ xmlns:xsi= //www.w3.org/2001/XMLSchema-instance xmlns:xsd= //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 = //localhost:9999/dataService/services/Job ;
new HttpPostTest().testPost(url);
}
} /PRE
以上两个例子我们能够看出,Java来完成WebServices的时辰Web应用办事器不是必需的,但愿列位同窗能够或许见机行事好好的支配WebServices所供应的各类上风,我们要不但会做,还要善于做!