`
jiaguwen123
  • 浏览: 404700 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

xfire客户端

 
阅读更多
转自:http://blog.csdn.net/xyzroundo/article/details/5891137
内容:
   注意:二个JAR包不能少:xfire-all-1.2.6.jar,和jaxb-xjc-2.0.1.jar.
    xmlbeans-2.4.0.jar

       一. 编写Ant脚本build.xml,就是用org.codehaus.xfire.gen.WsGenTask生成Client Stub,放在org.ymcn.ws.client下,其中的参数应用个人而异:

<?xml version=”1.0″?>
<project default=”genfiles” basedir=”.”>
    <property name=”lib” value=”WebRoot/WEB-INF/lib” />
    <path id=”myclasspath”>
        <fileset dir=”${lib}”>
            <include name=”*.jar” />
        </fileset>
        <pathelement location=”${genfiles}” />
    </path>
    <property name=”code_path” value=”src” />
    <property name=”wsdl_path” value=”http://192.168.1.102:8888/wss/HelloWorldService.ws?wsdl” />
    <property name=”code_package” value=”org.ymcn.ws.client” />
    <target name=”genfiles” description=”Generate the files”>
        <taskdef name=”wsgen” classname=”org.codehaus.xfire.gen.WsGenTask” classpathref=”myclasspath” />
        <wsgen outputDirectory=”${code_path}” wsdl=”${wsdl_path}” package=”${code_package}” binding=”xmlbeans” overwrite=”true” />
    </target>
</project>

     二.在MyEclipse中运行此Ant 脚本

     此时会在org.ymcn.ws.client下生成三个文件:HelloWorldClient.java, HelloWorldImpl.java, HelloWorldPortType.java,其中第一个和第三个是非常重要的.

     三.测试Client Stub:

package org.ymcn.test.client;

import org.ymcn.ws.client.HelloWorldClient;
import org.ymcn.ws.client.HelloWorldPortType;

public class HelloWorldJaxb {
public static void main(String[] args) {
   try {
    HelloWorldClient client = new HelloWorldClient();
    HelloWorldPortType service = client.getHelloWorldHttpPort();
    String result = service.sayHello(“老牛啊”);
  
    System.out.println(result);
  
   } catch(Exception e) {
    e.printStackTrace();
   }
}
}

     在控制台输出:你好, 老牛啊, 成功.

     四.发布

     把那三个Stub打包,就可以在分布式环境下测试了.
分享到:
评论
1 楼 jiaguwen123 2011-12-03  
2,AuthenticationHandler类的写法

package com.ktsfot.ws.security;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.*;

public class AuthenticationHandler extends AbstractHandler {

public void invoke(MessageContext cfx) throws Exception {
  // TODO Auto-generated method stub
  if(cfx.getInMessage().getHeader() == null)
           if(cfx.getInMessage().getHeader()==null){
                throw new org.codehaus.xfire.fault.XFireFault("请求必须包含验证信息",org.codehaus.xfire.fault.XFireFault.SENDER);
            }
            Element token=cfx.getInMessage().getHeader().getChild("AuthenticationToken");
            if (token == null){
             throw new org.codehaus.xfire.fault.XFireFault("请求必须包含身份验证信息", org.codehaus.xfire.fault.XFireFault.SENDER);
            }

               String username = token.getChild("Username").getValue();
               String password = token.getChild("Password").getValue();
               try{
                   //进行身份验证 ,只有abcd@1234的用户为授权用户
                  if(username.equals("abcd") && password.equals("1234"))
                   //这语句不显示
                   System.out.println("身份验证通过");
                  else throw new Exception();
               }
               catch (Exception e){
                   throw new   org.codehaus.xfire.fault.XFireFault("非法的用户名和密码",   org.codehaus.xfire.fault.XFireFault.SENDER);
               }


}

}



3,客户端调用:

HelloWorldClient client = new HelloWorldClient();
  //create a default service endpoint
        HelloWorldPortType service = client.getHelloWorldHttpPort();
       
       
        XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
        proxy.getClient().addOutHandler(new ClientAuthenticationHandler("abcd", "1234"));
        System.out.print(service.sayHello());
        System.exit(0);

相关推荐

Global site tag (gtag.js) - Google Analytics