{"id":267,"date":"2011-10-04T10:36:01","date_gmt":"2011-10-04T01:36:01","guid":{"rendered":"http:\/\/www.whoocus.com\/blog\/wordpress\/?p=267"},"modified":"2011-10-04T10:36:01","modified_gmt":"2011-10-04T01:36:01","slug":"seasar2-%e3%81%a8-dwr%e9%80%a3%e6%90%ba","status":"publish","type":"post","link":"https:\/\/www.blowfish.co.jp\/?p=267","title":{"rendered":"Seasar2 \u3068 DWR\u9023\u643a"},"content":{"rendered":"<p>\u307e\u305a\u306f\u3001<a href=\"http:\/\/directwebremoting.org\/dwr\/downloads\/index.html\">DWR<\/a>\u306e\u30b5\u30a4\u30c8\u304b\u3089jar\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\/WEB-INF\/lib \u30d5\u30a9\u30eb\u30c0\u3078\u914d\u7f6e\u3057\u3066\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u901a\u3059\u3002<\/p>\n<p>\/WEB-INF\/web.xml<br \/>\n[xml]<br \/>\n&lt;servlet&gt;<br \/>\n\t&lt;display-name&gt;DWR Servlet&lt;\/display-name&gt;<br \/>\n\t&lt;servlet-name&gt;dwr-invoker&lt;\/servlet-name&gt;<br \/>\n\t&lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;\/servlet-class&gt;<br \/>\n\t&lt;init-param&gt;<br \/>\n\t\t&lt;param-name&gt;debug&lt;\/param-name&gt;<br \/>\n\t\t&lt;param-value&gt;true&lt;\/param-value&gt;<br \/>\n\t&lt;\/init-param&gt;<br \/>\n&lt;\/servlet&gt;<br \/>\n&lt;servlet-mapping&gt;<br \/>\n\t&lt;servlet-name&gt;dwr-invoker&lt;\/servlet-name&gt;<br \/>\n\t&lt;url-pattern&gt;\/dwr\/*&lt;\/url-pattern&gt;<br \/>\n&lt;\/servlet-mapping&gt;<br \/>\n[\/xml]<br \/>\n\u307e\u305a\u306f\u3001DWR\u3000Servlet\u306eweb.xml\u3078\u306e\u8a2d\u5b9a\u3002<br \/>\n\/dwr\/* \u3067\u6765\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u540cServlet\u304c\u53d7\u3051\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3002<\/p>\n<p>\/WEB-INF\/dwr.xml<br \/>\n[xml]<br \/>\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br \/>\n&lt;!DOCTYPE dwr PUBLIC<br \/>\n  &quot;-\/\/GetAhead Limited\/\/DTD Direct Web Remoting 2.0\/\/EN&quot;<br \/>\n  &quot;http:\/\/getahead.org\/dwr\/dwr20.dtd&quot;&gt;<br \/>\n&lt;dwr&gt;<br \/>\n\t&lt;init&gt;<br \/>\n\t\t&lt;creator id=&quot;s2creator&quot; class=&quot;packagename.S2Creator&quot; \/&gt;<br \/>\n\t&lt;\/init&gt;<br \/>\n\t&lt;allow&gt;<br \/>\n\t\t&lt;create creator=&quot;s2creator&quot; javascript=&quot;ajaxService&quot;&gt;<br \/>\n\t\t\t&lt;param name=&quot;serviceName&quot; value=&quot;ajaxService&quot;\/&gt;<br \/>\n\t\t&lt;\/create&gt;<br \/>\n\t&lt;\/allow&gt;<br \/>\n&lt;\/dwr&gt;<br \/>\n[\/xml]<br \/>\n\u6307\u5b9a\u3057\u305fCreator\u30af\u30e9\u30b9\u304c\u3001Seasar2\u304c\u7ba1\u7406\u3057\u3066\u3044\u308bService\u30af\u30e9\u30b9\u3092\u8fd4\u3059\u3088\u3046\u306b\u5b9a\u7fa9\u3059\u308b\u3002<br \/>\n&lt;init&gt;\u3067\u306f\u3001creator \u306e id (\u4efb\u610f)\u3068 class\u5c5e\u6027\u306f\u5bfe\u8c61\u30af\u30e9\u30b9\u540d\u3092\u6307\u5b9a\u3059\u308b\u3002<br \/>\n&lt;param&gt;\u3067\u306f\u3001S2Creator.java\u30af\u30e9\u30b9\u3067DI\u3059\u308b name(setter\u3067\u30bb\u30c3\u30c8\u3059\u308b\u30d7\u30ed\u30d1\u30c6\u30a3\u540d)\u3068value(class\u540d)\u3092\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<p>S2Creator.java<br \/>\n[java]<br \/>\npackage packagename.creator;<\/p>\n<p>import org.directwebremoting.create.AbstractCreator;<br \/>\nimport org.seasar.framework.container.factory.SingletonS2ContainerFactory;<\/p>\n<p>public class S2Creator extends AbstractCreator {<\/p>\n<p>\tprivate String serviceName;<\/p>\n<p>\t@Override<br \/>\n\tpublic Object getInstance() throws InstantiationException {<\/p>\n<p>\t\treturn SingletonS2ContainerFactory<br \/>\n\t\t\t\t.getContainer()<br \/>\n\t\t\t\t.getComponent(serviceName);<br \/>\n\t}<\/p>\n<p>\t@Override<br \/>\n\tpublic Class&lt;?&gt; getType() {<br \/>\n\t\treturn SingletonS2ContainerFactory<br \/>\n\t\t\t\t.getContainer()<br \/>\n\t\t\t\t.getComponentDef(serviceName)<br \/>\n\t\t\t\t.getComponentClass();<br \/>\n\t}<\/p>\n<p>\tpublic void setServiceName(String serviceName) {<br \/>\n\t\tthis.serviceName = serviceName;<br \/>\n\t}<br \/>\n}<br \/>\n[\/java]<br \/>\ndwr.xml\u3067\u6307\u5b9a\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u540d\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u304b\u3089service\u30af\u30e9\u30b9\u3092\u8fd4\u3059\u3002<\/p>\n<p>AjaxService.java<br \/>\n[java]<br \/>\npackage packagename.service;<\/p>\n<p>public interface AjaxService {<\/p>\n<p>\t\/**<br \/>\n\t * @param name<br \/>\n\t * @return<br \/>\n\t *\/<br \/>\n\tString hello(String name);<\/p>\n<p>}<br \/>\n[\/java]<br \/>\n\u5b9f\u969b\u306eService\u304c\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30af\u30e9\u30b9\u3002<\/p>\n<p>AjaxServiceImpl.java<br \/>\n[java]<br \/>\npackage packagename.service.impl;<\/p>\n<p>import package.name.service.AjaxService;<\/p>\n<p>public class AjaxServiceImpl implements AjaxService {<\/p>\n<p>\t@Override<br \/>\n\tpublic String hello(String name) {<br \/>\n\t\treturn &quot;Hello &quot; + name + &quot;!!!&quot;;<br \/>\n\t}<br \/>\n}<br \/>\n[\/java]<br \/>\n\u5b9f\u969b\u306e\u30b5\u30fc\u30d0\u51e6\u7406\u3092\u884c\u3046Service\u30af\u30e9\u30b9<\/p>\n<p>index.jsp<br \/>\n[javascript]<br \/>\n&lt;script src=&quot;\/dwr\/interface\/ajaxService.js&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;<br \/>\n&lt;script src=&quot;\/dwr\/engine.js&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;<br \/>\n&lt;script src=&quot;\/dwr\/util.js&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;<\/p>\n<p>&lt;script type=&quot;text\/javascript&quot;&gt;<br \/>\n$(function(){<br \/>\n\tajaxService.hello(&quot;AJAX&quot;, callBack);<br \/>\n});<br \/>\nfunction callBack(value){<br \/>\n\talert(value);<br \/>\n}<br \/>\n&lt;\/script&gt;<br \/>\n[\/javascript]<\/p>\n<p>JSP(HTML)\u3067\u3001\u30b5\u30fc\u30d0\u5074\u306b\u81ea\u52d5\u751f\u6210\u3055\u308c\u308bjs\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u3092\u5b9a\u7fa9\u3059\u308b\u3002<br \/>\n\/dwr\/interface\/ajaxService.js<br \/>\n\/dwr\/engine.js<br \/>\n\/dwr\/util.js<\/p>\n<p>dwr.xml \u3067\u5b9a\u7fa9\u3057\u305fJavaScript\u540d\u3067\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3079\u308b\u3002<br \/>\n\u3053\u306e\u5834\u5408\u3001\u7b2c1\u5f15\u6570\u306f\u3001\u30b5\u30fc\u30d0\u3078\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u3001\u7b2c2\u5f15\u6570\u306f\u975e\u540c\u671f\u3067\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u3055\u308c\u308bJavascript\u306e\u95a2\u6570\u540d\u3092\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<p>\u304a\u305d\u3089\u304f\u3053\u308c\u3067\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3042\u308b\u3002<br \/>\n\u96e3\u3057\u304f\u8003\u3048\u3066\u3044\u305f\u304c\u3001\u8a2d\u5b9a\u304c\u7d42\u308f\u308c\u3070\u304b\u306a\u308a\u7c21\u5358\u306bAjax\u901a\u4fe1\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<p>DWR\u306e\u8a73\u7d30\u306f\u3053\u3061\u3089(<a href=\"http:\/\/directwebremoting.org\/dwr\/index.html\">DWR<\/a>)\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u307e\u305a\u306f\u3001DWR\u306e\u30b5\u30a4\u30c8\u304b\u3089jar\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\/WEB-INF\/lib \u30d5\u30a9\u30eb\u30c0\u3078\u914d\u7f6e\u3057\u3066\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u901a\u3059\u3002 \/WEB-INF\/web.xml [xml] &lt;servlet&gt; &lt;displa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"saved_in_kubio":false,"footnotes":""},"categories":[9,10,4],"tags":[],"class_list":["post-267","post","type-post","status-publish","format-standard","hentry","category-java","category-javascript","category-tech"],"_links":{"self":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=267"}],"version-history":[{"count":0,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blowfish.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}