﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-justinchen-随笔分类-Rest </title><link>http://www.blogjava.net/justinchen/category/35770.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 05 Nov 2008 17:23:24 GMT</lastBuildDate><pubDate>Wed, 05 Nov 2008 17:23:24 GMT</pubDate><ttl>60</ttl><item><title>Create Restful Web Service With CXF 2.1.X/CXF 2.2, Part 1: create a service in Tomcat (Contine) - Create client code</title><link>http://www.blogjava.net/justinchen/archive/2008/11/05/238909.html</link><dc:creator>Justin Chen</dc:creator><author>Justin Chen</author><pubDate>Wed, 05 Nov 2008 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/justinchen/archive/2008/11/05/238909.html</guid><wfw:comment>http://www.blogjava.net/justinchen/comments/238909.html</wfw:comment><comments>http://www.blogjava.net/justinchen/archive/2008/11/05/238909.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/justinchen/comments/commentRss/238909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinchen/services/trackbacks/238909.html</trackback:ping><description><![CDATA[<div>
<p>The previous message only
explains how to create service, this message will describe how to
create client and invoke server side. Actually, JSR-311 only defined the server API,
so, each vendor will have different ideas on client. But one common way
is to use Apache Http Common Client lib. Please see following examples.</p>
<h5>1. GET a customer</h5>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"><br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Sent&nbsp;HTTP&nbsp;GET&nbsp;request&nbsp;to&nbsp;query&nbsp;customer&nbsp;info</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Sent&nbsp;HTTP&nbsp;GET&nbsp;request&nbsp;to&nbsp;query&nbsp;customer&nbsp;info</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
URL&nbsp;url&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;URL(</span><span style="color: #000000;">"</span><span style="color: #000000;">http://localhost:8080/vendor_search/services/customerservice/customers/123</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
InputStream&nbsp;in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;url.openStream();<br />
<br />
System.out.println(getStringFromInputStream(in));&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">NOTE,&nbsp;return&nbsp;an&nbsp;input&nbsp;stream,&nbsp;you&nbsp;need&nbsp;convert&nbsp;xml&nbsp;to&nbsp;Java&nbsp;Object&nbsp;by&nbsp;yourself</span></div>
<h5>2. Use PUT to update a customer</h5>
<pre><code></code><br />
<br />
</pre>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Sent&nbsp;HTTP&nbsp;PUT&nbsp;request&nbsp;to&nbsp;update&nbsp;customer&nbsp;info</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
Client&nbsp;client&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Client();<br />
<br />
String&nbsp;inputFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client.getClass().getResource(</span><span style="color: #000000;">"</span><span style="color: #000000;">update_customer.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">).getFile();<br />
<br />
File&nbsp;input&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(inputFile);<br />
<br />
PutMethod&nbsp;put&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PutMethod(</span><span style="color: #000000;">"</span><span style="color: #000000;">http://localhost:8080/vendor_search/services/customerservice/customers</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
RequestEntity&nbsp;entity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileRequestEntity(input,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">text/xml;&nbsp;charset=ISO-8859-1</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
put.setRequestEntity(entity);<br />
<br />
HttpClient&nbsp;httpclient&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HttpClient();<br />
<br />
<br />
<br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httpclient.executeMethod(put);<br />
<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Response&nbsp;status&nbsp;code:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;result);<br />
<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Response&nbsp;body:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
System.out.println(put.getResponseBodyAsString());<br />
<br />
}&nbsp;</span><span style="color: #0000ff;">finally</span><span style="color: #000000;">&nbsp;{<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Release&nbsp;current&nbsp;connection&nbsp;to&nbsp;the&nbsp;connection&nbsp;pool&nbsp;once&nbsp;you&nbsp;are<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;done</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
put.releaseConnection();<br />
<br />
}</span></div>
<h5>3. Use POST to add a customer<br />
</h5>
<pre><code></code></pre>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"><br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Sent&nbsp;HTTP&nbsp;POST&nbsp;request&nbsp;to&nbsp;add&nbsp;customer</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
inputFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client.getClass().getResource(</span><span style="color: #000000;">"</span><span style="color: #000000;">add_customer.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">).getFile();<br />
<br />
input&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(inputFile);<br />
<br />
PostMethod&nbsp;post&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PostMethod(</span><span style="color: #000000;">"</span><span style="color: #000000;">http://localhost:8080/vendor_search/services/customerservice/customers</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
post.addRequestHeader(</span><span style="color: #000000;">"</span><span style="color: #000000;">Accept</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">text/xml</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
entity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileRequestEntity(input,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">text/xml;&nbsp;charset=ISO-8859-1</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
post.setRequestEntity(entity);<br />
<br />
httpclient&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HttpClient();<br />
<br />
<br />
<br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httpclient.executeMethod(post);<br />
<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Response&nbsp;status&nbsp;code:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;result);<br />
<br />
System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Response&nbsp;body:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
System.out.println(post.getResponseBodyAsString());<br />
<br />
}&nbsp;</span><span style="color: #0000ff;">finally</span><span style="color: #000000;">&nbsp;{<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Release&nbsp;current&nbsp;connection&nbsp;to&nbsp;the&nbsp;connection&nbsp;pool&nbsp;once&nbsp;you&nbsp;are<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;done</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
post.releaseConnection();<br />
<br />
}<br />
</span></div>
<p>So, for this way provided by Apach Common Http Client, the user still need think about the convention from XML to POJO. It is not so convenience. We will provide a utility class to simply this process.</p>
</div>
<img src ="http://www.blogjava.net/justinchen/aggbug/238909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinchen/" target="_blank">Justin Chen</a> 2008-11-05 22:48 <a href="http://www.blogjava.net/justinchen/archive/2008/11/05/238909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Create Restful Web Service With CXF 2.1.X/CXF 2.2, Part 1: Create a service in Tomcat</title><link>http://www.blogjava.net/justinchen/archive/2008/11/05/238868.html</link><dc:creator>Justin Chen</dc:creator><author>Justin Chen</author><pubDate>Wed, 05 Nov 2008 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/justinchen/archive/2008/11/05/238868.html</guid><wfw:comment>http://www.blogjava.net/justinchen/comments/238868.html</wfw:comment><comments>http://www.blogjava.net/justinchen/archive/2008/11/05/238868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinchen/comments/commentRss/238868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinchen/services/trackbacks/238868.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: The first article of a series of implementing Restful web service with CXF. This one focus on a very simple service and how to config it in Tomcat container. &nbsp;&nbsp;<a href='http://www.blogjava.net/justinchen/archive/2008/11/05/238868.html'>阅读全文</a><img src ="http://www.blogjava.net/justinchen/aggbug/238868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinchen/" target="_blank">Justin Chen</a> 2008-11-05 18:24 <a href="http://www.blogjava.net/justinchen/archive/2008/11/05/238868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Creating Restful Web Service instead of SOAP web service</title><link>http://www.blogjava.net/justinchen/archive/2008/11/05/238760.html</link><dc:creator>Justin Chen</dc:creator><author>Justin Chen</author><pubDate>Wed, 05 Nov 2008 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/justinchen/archive/2008/11/05/238760.html</guid><wfw:comment>http://www.blogjava.net/justinchen/comments/238760.html</wfw:comment><comments>http://www.blogjava.net/justinchen/archive/2008/11/05/238760.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/justinchen/comments/commentRss/238760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinchen/services/trackbacks/238760.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: This message gives us a brief introduction on Restful web service (All of these information comes from internet and i just re-organized them) and some thoughts on how can we apply this new architecture pattern into our common service services.&nbsp;&nbsp;<a href='http://www.blogjava.net/justinchen/archive/2008/11/05/238760.html'>阅读全文</a><img src ="http://www.blogjava.net/justinchen/aggbug/238760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinchen/" target="_blank">Justin Chen</a> 2008-11-05 10:43 <a href="http://www.blogjava.net/justinchen/archive/2008/11/05/238760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>