WebService服务的搭建
功能介绍:提供WebService的接口,供其他人调用。
系统:Win7 准备工具:eclipse,下图是我的IDE,自己在eclilpse的官网上下载的。
数据库:MyQSL 5.6 Tomcat:apache-tomcat-7.0.64 环境搭建
创建一个web项目 选择刚刚配置的Tomcat,一路next。 这里需要注意下,Eclipse和MyEclilpse有点区别,Eclipse创建的Web项目默认使用的路径是WebContent,而MyEclipse默认使用的是WebRoot 如果从MyEclipse中导出的项目,在Eclipse中跑,需要改动一个配置。就是当前项目的配置文件。 在工作空间中找到当前的项目 WebServiceDemo->.settings->org.eclipse.wst.common.component 下图中的绿色部分 客户端测试代码
<code class="hljs java has-numbering"><span class="hljs-keyword">package</span> com.test; <span class="hljs-keyword">import</span> java.net.MalformedURLException; <span class="hljs-keyword">import</span> java.net.URL; <span class="hljs-keyword">import</span> org.codehaus.xfire.client.Client; <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">WebServiceTest</span> {</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) <span class="hljs-keyword">throws</span> MalformedURLException,Exception { <span class="hljs-comment">// TODO Auto-generated method stub</span> String url = <span class="hljs-string">"http://localhost:8080/WebServiceDemo/services/queryPeople?wsdl"</span> ; String xml = <span class="hljs-string">"<?xml version='1.0' encoding='utf-8'?><body><properties><name>xiaoming</name></properties></body>"</span> ; Client c = <span class="hljs-keyword">new</span> Client(<span class="hljs-keyword">new</span> URL(url)); Object[] o = c.invoke( <span class="hljs-string">"queryPeopleInfo"</span>,<span class="hljs-keyword">new</span> Object[]{xml}); <span class="hljs-comment">//目的是通过queryPeopleInfo方法查询这个人的信息,xml为传入的参数。</span> <span class="hljs-comment">//如果成功,o为返回的值;失败,则为空。因为WebService没有创建,此处肯定返回失败。</span> <span class="hljs-keyword">if</span>(o !=<span class="hljs-keyword">null</span>){ String result = o [<span class="hljs-number">0</span>].toString(); System. out.println(result ); } <span class="hljs-keyword">else</span>{ System. out.println(<span class="hljs-string">"没有找到"</span> ); } } }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li></ul> 由于WebService服务还没有搭建、所有执行后结果为: 没有找到 WebService的创建First、把项目需要的jar包 都copy到 WebContent/WEB-INF/lib里 。 本Demo中需要的 jar包在代码中都有
<code class="hljs cs has-numbering">package com.service; <span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> QueryPeople { <span class="hljs-keyword">public</span> String <span class="hljs-title">queryPeopleInfo</span>(String name ); } </code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>
<code class="hljs java has-numbering"><span class="hljs-keyword">package</span> com.service.impl; <span class="hljs-keyword">import</span> com.service.QueryPeople; <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">QueryPeopleImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">QueryPeople</span>{</span> <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> String <span class="hljs-title">queryPeopleInfo</span>(String name ) { <span class="hljs-comment">// TODO Auto-generated method stub</span> <span class="hljs-comment">//具体在数据库查询的一些处理</span> <span class="hljs-keyword">return</span> <span class="hljs-string">"查询 "</span> + name + <span class="hljs-string">" 成功"</span>; } } </code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li></ul> 配置文件
<code class="hljs xml has-numbering"><span class="hljs-pi"><?xml version="1.0" encoding= "UTF-8"?></span> <span class="hljs-tag"><<span class="hljs-title">web-app</span> <span class="hljs-attribute">xmlns</span>=<span class="hljs-value">"http://java.sun.com/xml/ns/j2ee"</span> <span class="hljs-attribute">xmlns:xsi</span>=<span class="hljs-value">"http://www.w3.org/2001/XMLSchema-instance"</span> <span class="hljs-attribute">version</span>=<span class="hljs-value">"2.4"</span> <span class="hljs-attribute">xsi:schemaLocation</span>=<span class="hljs-value">"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span>></span> <span class="hljs-tag"><<span class="hljs-title">servlet</span>></span> <span class="hljs-tag"><<span class="hljs-title">servlet-name</span>></span> XFireServlet<span class="hljs-tag"></<span class="hljs-title">servlet-name</span> ></span> <span class="hljs-tag"><<span class="hljs-title">servlet-class</span>></span> org.codehaus.xfire.transport.http.XFireConfigurableServlet <span class="hljs-tag"></<span class="hljs-title">servlet-class</span>></span> <span class="hljs-tag"><<span class="hljs-title">init-param</span>></span> <span class="hljs-tag"><<span class="hljs-title">param-name</span>></span> config<span class="hljs-tag"></<span class="hljs-title">param-name</span> ></span> <span class="hljs-tag"><<span class="hljs-title">param-value</span>></span> services.xml<span class="hljs-tag"></<span class="hljs-title">param-value</span> ></span> <span class="hljs-tag"></<span class="hljs-title">init-param</span>></span> <span class="hljs-tag"><<span class="hljs-title">load-on-startup</span>></span> 0<span class="hljs-tag"></ <span class="hljs-attribute">load-on-startup</span>></span> <span class="hljs-tag"></<span class="hljs-title">servlet</span>></span> <span class="hljs-tag"><<span class="hljs-title">servlet-mapping</span>></span> <span class="hljs-tag"><<span class="hljs-title">servlet-name</span>></span> XFireServlet<span class="hljs-tag"></<span class="hljs-title">servlet-name</span> ></span> <span class="hljs-tag"><<span class="hljs-title">url-pattern</span>></span> /services/*<span class="hljs-tag"></<span class="hljs-title">url-pattern</span> ></span> <span class="hljs-tag"></<span class="hljs-title">servlet-mapping</span>></span> <span class="hljs-tag"><<span class="hljs-title">welcome-file-list</span>></span> <span class="hljs-tag"><<span class="hljs-title">welcome-file</span>></span> index.jsp<span class="hljs-tag"></<span class="hljs-title">welcome-file</span> ></span> <span class="hljs-tag"></<span class="hljs-title">welcome-file-list</span>></span> <span class="hljs-tag"></<span class="hljs-title">web-app</span>></span> </code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul> 配置说明:标签中的< init-param> 如果不配置的话,默认的services.xml路径为WebContent/WEB-INF/META-INF/xfire/services.xml( 具体是哪里配置的这个路径不清楚,知道的小伙伴可以告诉我)
<code class="hljs xml has-numbering"><span class="hljs-pi"><?xml version="1.0" encoding= "UTF-8"?></span> <span class="hljs-tag"><<span class="hljs-title">beans</span> <span class="hljs-attribute">xmlns</span>=<span class="hljs-value">"http://xfire.codehaus.org/config/1.0"</span> ></span> <span class="hljs-comment"><!-- 查询人的信息 --></span> <span class="hljs-tag"><<span class="hljs-title">service</span>></span> <span class="hljs-tag"><<span class="hljs-title">name</span>></span> queryPeople<span class="hljs-tag"></<span class="hljs-title">name</span> ></span> <span class="hljs-tag"><<span class="hljs-title">serviceClass</span>></span> com.service.QueryPeople<span class="hljs-tag"></<span class="hljs-title">serviceClass</span> ></span> <span class="hljs-tag"><<span class="hljs-title">implementationClass</span>></span> com.service.impl.QueryPeopleImpl <span class="hljs-tag"></<span class="hljs-title">implementationClass</span>></span> <span class="hljs-tag"><<span class="hljs-title">style</span>></span><span class="css"> <span class="hljs-tag">wrapped</span></<span class="hljs-tag">style</span> > <<span class="hljs-tag">use</span>> <span class="hljs-tag">literal</span></<span class="hljs-tag">use</span> > <<span class="hljs-tag">scope</span>> <span class="hljs-tag">application</span></<span class="hljs-tag">scope</span> > </<span class="hljs-tag">service</span>> </<span class="hljs-tag">beans</span>> </span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul> 每个就是一个服务、name 为提供的服务名、serviceClass为服务的接口、implementationClass为具体实现的类 到此为止,一个WebService的框架基本搭建完成了。 运行项目
似乎不是我们想要的结果。 这里注意下浏览器里的路劲:只是tomcat服务+项目名称, 我们需要的是WebService服务 so 后面还要加上services加 真正的路径为:http://localhost:8080/WebServiceDemo/services最开始我一直疑惑services的由来,找找配置文件才明白 services 就是在web.xml 中配置的XFireServlet名称,再在浏览器中输入回车 界面就出来了,到这步已经说明配置成功了。点击[wsdl] 可以查看具体的接口信息,如下 OK,再返回到最初的客户端测试代码中去。 运行代码、预期得到的结果为 : ” 查询 (传入的值) 成功” 下篇将会在这个代码的基础上进行完善,使用Spring 注入方式进行数据库查询。下载链接:http://download.csdn.net/detail/crazycodings/9224379 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |