练习2个项目  其中一个需要作为服务器端 提供服务 书上说需要添加xfire-all-1.2.6.jar 问朋友又说不需要  本人初学不懂  这个具体是做什么的  在哪里加合适?

解决方案 »

  1.   

    转载一下!!看一下!!
    我做项目时,没有用到这个东西!!
    开发环境:eclipse3.2+tomcat5.5.9+xfire1.2.6一:在MyEclipse中新建项目XFire首先从官方网址http://xfire.codehaus.org下载最新的1.2.6版本(截至2007-9-9)。从网站上下载xfire-distribution-1.2.6.zip文件,解压缩后得到如下的目录结构:api:主要是javadoc文档资料;examples:xfire自带的例子程序;lib:xfire所需的jar文件;manual:xfire 模块xfire-all-1.2.6.jar:是xfire提供的整体jar包
    二。在MyEclipse中新建XFire项目将xfire-1.2.6\lib下面的内容拷贝到项目的lib目录中将xfire-1.2.6\xfire-all-1.2.6.jar拷贝到项目的lib目录中1.建立源文件夹demo;新建MathService.java文件
    java文件内容如下:public class MathService {
    public int Add(int a ,int b)
        {
            return a+b ;
        }
    }2、web.xml和services.xml文件内容设置<?xml version="1.0" encoding="ISO-8859-1"?>
    <!-- START SNIPPET: webxml -->
    <!DOCTYPE web-app
         PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
         "http://java.sun.com/dtd/web-app_2_3.dtd">
        
    <web-app><servlet>
        <servlet-name>XFireServlet</servlet-name>
        <display-name>XFire Servlet</display-name>
        <servlet-class>
             org.codehaus.xfire.transport.http.XFireConfigurableServlet
        </servlet-class>
    </servlet><servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
    </servlet-mapping><servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    </web-app>
    <!-- END SNIPPET: webxml -->services.xml(空services.xml)
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://xfire.codehaus.org/config/1.0"></beans>加了部署的空services.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://xfire.codehaus.org/config/1.0">
    <service>
        <name>MathService</name>
          <namespace>http://MathService</namespace>
          <serviceClass>demo.MathService</serviceClass>
    </service>
    </beans>services.xml在META-INF目录下,并且要将META-INF拷贝道WEB-INF下,否则将找不到services.xmlhttp://localhost:8080/XFire/services/MathService?wsdl
    如能正确的显示成功页面,说明我们的xfire配置成功了。下面就可基于xfire进行Web Service开发了。
    3、生成web service客户端调用文件
    XFire的WEB-INF中增加一个build.xml文件。xfire提供了一个ant任务:
    <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />
    build.xml文件的内容如下:<?xml version="1.0"?>
    <project name="XFire" default="genfiles" basedir=".">
        <property name="lib" value="lib" />
        <path id="myclasspath">
            <fileset dir="${lib}">
                <include name="*.jar" /> 
            </fileset> 
            <pathelement location="${genfiles}" />
        </path>
        <!--通过XFire ant任务生成客户端代码的存放位置-->
        <property name="code_path" value="src.client" /> 
        <!--需要生成客户端代码的wsdl文件-->
        <property name="wsdl_path" value="http://localhost:8080/XFire/services/MathService?wsdl" /> 
        <!--生成客户端代码的包名--> 
        <property name="code_package" value="demo" />
        
        <!-- Remove classes directory for clean build -->
        <target name="clean" description="Prepare for clean build"> 
            <delete dir="${code_path}"/>
            <mkdir dir="${code_path}"/>
        </target>
        
        <!--<target name="genfiles" depends="clean" description="Generate the files"> -->
        <target name="genfiles" description="Generate the files">
            <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />
            <!--outputDirectory属性定义创建的代码所在的文件夹
                wsdl是web服务的wsdl文件
                package代表创建的代码的package
            -->
            <wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans" /> 
        </target>
    </project>执行ant脚本,将会生成客户端代码,共三个文件。会放在包demo下面,文件分别是:MathServiceClient.java、MathServiceImpl.java、MathServicePortType.java
    4、编写测试代码,通过调用5中生成的代码,编写TestClient.java文件。文件内容如下:
    public class TestClient {
    /** *//**
         * 客户端测试
         * 通过ant脚本生成的客户端进行调用
         * 
         * @param name    传入的参数,客户名字
         * @return    返回sayHello()的返回值
         */
        public static int testClient(int a,int b){
        MathServiceClient SC = new MathServiceClient();
        MathServicePortType SP = SC.getMathServiceHttpPort();
            int result =SP.add(a, b);
            return result;
        }
        /** *//**
         * @param args
         * @throws Exception 
         */
        public static void main(String[] args) throws Exception {
            System.out.println(testClient(1,2));
        }
    }