现在的位置: 首页 > 综合 > 正文

7Web 服务(Web Service)

2014年10月21日 ⁄ 综合 ⁄ 共 4772字 ⁄ 字号 评论关闭
 

Web 服务(Web Service)

 

7.1 Web Service 的创建

我们将创建一个基于
JSR-181
规范的 Web
Service
及其对应的客户端。

 

开发一个 JSR-181
POJO Endpoint
Web Service应遵守下面几个步骤:

1> 
建立一个POJO
endpoint

2> 

endpoint 
定义成一个 servlet

3>   
endpoint 打包成一个 Web 应用(war  文件)

 

△建立一个POJO endpoint

HelloWorldService.java

package com.foshanshop.web.ws;

 

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

 

@WebService(targetNamespace="http://ws.foshanshop.com",

       name = "HelloWorld",

       serviceName = "HelloWorldService")

@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)

public class HelloWorldService{

   

    @WebMethod(operationName="SayHello")

    public String SayHello(@WebParam(name="name") String
name) {

        return name +"说:你好!世界,这是我的第一个web service.";

    }

}

    
endpoint  定义成一个 servlet

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>

 

    <servlet>

      <servlet-name>HelloWorldService</servlet-name>

      <servlet-class>com.foshanshop.web.ws.HelloWorldService</servlet-class>

    </servlet>

 

    <servlet-mapping>

      <servlet-name>HelloWorldService</servlet-name>

      <url-pattern>/HelloWorldService</url-pattern>

    </servlet-mapping>

</web-app>

 

    
endpoint 打包成一个 Web 应用(war  文件)

build.xml

<?xml version="1.0"?>

<!-- ======================================================================= -->

<!-- JWS build file                                               
          
-->

<!-- ======================================================================= -->

<project name="JWS" default="war" basedir="..">

    <property environment="env" />

    <property name="app.dir" value="${basedir}/JWS" />

    <property name="src.dir" value="${app.dir}/src" />

    <property name="jboss.home" value="${env.JBOSS_HOME}" />

    <property name="jboss.server.config" value="default" />

    <property name="build.dir" value="${app.dir}/build" /> 

    <property name="build.classes.dir" value="${build.dir}/classes" />

 

    <!-- Build classpath -->

    <path id="build.classpath">

       <fileset dir="${jboss.home}/client">

           <include name="**/*.jar" />

       </fileset>

       <pathelement location="${build.classes.dir}" />

    </path>

 

    <!-- =================================================================== -->

    <!-- Prepares the build directory                                       
-->

    <!-- =================================================================== -->

    <target name="prepare" depends="clean">

       <mkdir dir="${build.dir}" />

       <mkdir dir="${build.classes.dir}" />

    </target>

 

    <!-- =================================================================== -->

    <!-- Compiles the source code                                           
-->

    <!-- =================================================================== -->

    <target name="compile" depends="prepare" description="编绎web服务">

       <javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="**">

           <classpath refid="build.classpath" />

       </javac>

    </target>

   

    <target name="war" depends="compile" description="创建WS发布包">

       <war warfile="${app.dir}/Services.war" webxml="${app.dir}/WEB-INF/web.xml">

           <classes dir="${build.classes.dir}">

              <include name="com/**" />

           </classes>

       </war>

    </target>

 

    <target name="deploy" depends="war">

       <copy file="${app.dir}/Services.war" todir="${jboss.home}/server/${jboss.server.config}/deploy" />

    </target>

   

    <!-- =================================================================== -->

    <!-- Cleans up generated stuff                                           -->

    <!-- =================================================================== -->

    <target name="clean">

       <delete dir="${build.dir}" />

       <delete file="${jboss.home}/server/${jboss.server.config}/deploy/Services.war" />

    </target>

</project>

 

 

7.2. java 语言调用 Web
Service

1>IDE 提供了生成 Web Service客户端代码的功能如下:

Eclipse →“新建”
→“其他” Web Services →“Web Service Client →“下一步” service definition:http://localhost:8080/Services/HelloWorldService?wsdl” →“下一步” →完成。

2>通过生成的代码调用Web Services

我们新建一个名为
TestHelloWorld
java 文件

TestHelloWorld.java

package com.foshanshop.AppTest;

 

import com.foshanshop.ws.client.HelloWorld;

import com.foshanshop.ws.client.HelloWorldService;

 

public class TestHelloWorld {

    public static void main(String[] args) {

        try {

        HelloWorldService
service =
new HelloWorldService();

        HelloWorld
helloWorld = service.getHelloWorldPort();
//从服务中取得入口端点

        String
result = helloWorld.sayHello(
"张朗");

            System.out.println(result);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

 

直接运行该文件就可以看到调用结果。

 

完。

-----------------------------------------------------------------

版本问题:

目前jbossws-1.2.0在调用中文参数时会出现乱码,jboss4.0.5GA却不存在

该问题,估计这个问题在后续版本中将得到修正。

 



抱歉!评论已关闭.