<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0
    axis常見問題及解決辦法參考這里
    http://www.ibm.com/developerworks/cn/webservices/ws-axisfaq/

    根據wsdl開成webservice的java客戶 例子:
    1、執行以下命令生成客戶端代碼
    Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/Hello.jws?wsdl  
    該命令的參數格式
    從最簡單的開始 ,-uri 指定wsdl文件
    > WSDL2Java -uri currencyConvert.wsdl

    -d 使用不同的data binding方法
    > WSDL2Java -uri currencyConvert.wsdl -d xmlbeans

    -a 生成異步的方法
    > WSDL2Java -uri currencyConvert.wsdl -a

    -t 生成測試case
    > WSDL2Java -uri currencyConvert.wsdl -t 

    稍微復雜一些的,-p可以指定生成的package,-o指定生成的路徑,-ss生成服務端代碼
    wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src  -ss -sd -g -p foo.bat


    2、生成代碼的使用
    /* 
    * Created on 2004-1-17 

    * TODO To change the template for this generated file go to 
    * Window - Preferences - Java - Code Style - Code Templates 
    */ 
    package localhost.axis.pdw_jws; 

    import java.rmi.RemoteException; 

    import javax.xml.rpc.ServiceException; 

    /** 
    @author Administrator 

    * TODO To change the template for this generated type comment go to 
    * Window - Preferences - Java - Code Style - Code Templates 
    */ 
    public class clientTest { 

    public static void main(String[] args) throws ServiceException, RemoteException { 
    PdwService service
    =new PdwServiceLocator(); 
    Pdw p
    =service.getpdw(); 
    int count=p.add(3,4); 
    System.out.println(count); 
    System.out.println(p.sub(
    4,6)); 


    開發環境地的建立和以往一樣,把例子中的classes的文件打包成jar,放到開發環境,就可能了。

    這是我3年前寫的,在myeclipse中進行axis開發的文件
    http://www.54bk.com/user1/6324/archives/2005/22197.html


    最近復習寫的代碼
    server-config.xml 代碼如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
     
    <globalConfiguration>
      
    <parameter name="adminPassword" value="admin"/>
      
    <parameter name="attachments.Directory" value="D:\resin-pro-3.1.0\webapps\axis\WEB-INF\attachments"/>
      
    <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
      
    <parameter name="sendXsiTypes" value="true"/>
      
    <parameter name="sendMultiRefs" value="true"/>
      
    <parameter name="sendXMLDeclaration" value="true"/>
      
    <parameter name="axis.sendMinimizedElements" value="true"/>
      
    <requestFlow>
       
    <handler type="java:org.apache.axis.handlers.JWSHandler">
        
    <parameter name="scope" value="session"/>
       
    </handler>
       
    <handler type="java:org.apache.axis.handlers.JWSHandler">
        
    <parameter name="scope" value="request"/>
        
    <parameter name="extension" value=".jwr"/>
       
    </handler>
      
    </requestFlow>
     
    </globalConfiguration>
     
    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
     
    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
     
    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>

     
     
    <transport name="local">
      
    <responseFlow>
       
    <handler type="LocalResponder"/>
      
    </responseFlow>
     
    </transport>
     
    <transport name="http">
      
    <requestFlow>
       
    <handler type="URLMapper"/>
       
    <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
      
    </requestFlow>
     
    </transport>
     
     
    <handler name="soapmonitor" 
        type
    ="java:org.apache.axis.handlers.SOAPMonitorHandler"> 
        
    <parameter name="wsdlURL" 
          value
    ="/axis/SOAPMonitorService-impl.wsdl"/> 
        
    <parameter name="namespace" 
          value
    ="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/> 
        
    <parameter name="serviceName" value="SOAPMonitorService"/> 
        
    <parameter name="portName" value="Demo"/> 
     
    </handler> 
     
    <!-- 日志handler -->
     
    <handler name="logHandler" type="java:webservices.handlers.LogHandler">
         
    <parameter name="filename" value="c:\\axislog.txt"/>
     
    </handler>
     
    <!-- 認證handler -->
     
    <handler name="authorHandler" type="java:webservices.handlers.AuthenticationHandler"/>
      
      
    <service name="SOAPMonitorService" provider="java:RPC"> 
        
    <parameter name="allowedMethods" value="publishMessage"/> 
        
    <parameter name="className" 
          value
    ="org.apache.axis.monitor.SOAPMonitorService"/> 
        
    <parameter name="scope" value="Application"/> 
      
    </service> 
      
      
    <service name="Version" provider="java:RPC">
          
    <parameter name="allowedMethods" value="getVersion"/>
          
    <parameter name="className" value="org.apache.axis.Version"/>
      
    </service>

      
    <service name="AdminService" provider="java:MSG">
         
    <parameter name="allowedMethods" value="AdminService"/>
         
    <parameter name="enableRemoteAdmin" value="false"/>
         
    <parameter name="className" value="org.apache.axis.utils.Admin"/>
         
    <namespace>http://xml.apache.org/axis/wsdd/</namespace>
      
    </service>
      
      
    <service name="MyServices" provider="java:RPC">
          
    <parameter name="allowedMethods" value="*"/>
          
    <parameter name="allowedRoles" value="peidw"/><!-- 驗證規則 -->
          
    <parameter name="className" value="webservices.MyServices"/>
          
    <beanMapping languageSpecificType="java:domain.Book" qname="ns:Book" xmlns:ns="urn:BeanService" />
           
    <beanMapping languageSpecificType="java:domain.Student" qname="ns:Student" xmlns:ns="urn:StudentService" />
           
          
    <requestFlow>
            
    <handler type="logHandler"/>
        
          
    </requestFlow>
      
    </service>
      
     
    </deployment>
    myservice.java
    package webservices;

    import domain.Book;
    import domain.Student;

    import java.util.*;
    /**
     * WebService 服務類(測試省略了接口)
     * 
    @author peidw
     *
     
    */
    public class MyServices {
       
        
    static Map map=new HashMap();
        
    static{
            map.put(
    "125-6922-10"new Book("Structs程序設計","孫衛琴","125-6922-10"));
            map.put(
    "125-6922-11"new Book("Think in Java","孫衛琴","125-6922-11"));
            map.put(
    "125-6922-12"new Book("C++程序高駐地","小張","125-6922-12"));
            map.put(
    "125-6912-59"new Book("CSS實踐手冊","小李","125-6912-59"));
            map.put(
    "125-6992-55"new Book("XML入門到精通","小裴","125-6992-55"));
        }
        
    /**
         * 返回對象類型
         * 
    @param isbn
         * 
    @return
         
    */
        
    public Book getBookByIsbn(String isbn){
            Book result
    =null;
            
    if(map.containsKey(isbn)){
                
    return (Book) map.get(isbn);
            }
            
    return result;
        }
        
    /**
         * 返回一個list類型
         * 
    @return
         
    */
        
    public List getBookList(){
            List result
    =null;
            Set set
    =map.entrySet();
            result
    =new ArrayList();
            result.addAll(set);
            
    return result;
        }
        
    /**
         * 返回對象數組
         * 
    @return
         
    */
        
    public Book[] getBookArray(){
            List tmp_list
    =getBookList();
            
    return (Book[]) tmp_list.toArray();
        }
        
    /**
         * 返回一個Map
         * 
    @return
         
    */
        
    public  Map getAllBookMap(){
            
    return map;
        }
        
    /**
         * 返回對象測試
         * 
    @return
         
    */
        
    public Student getStudent(){
            
    return new Student("小裴","kkk@tom.com","廣西合浦西場裴屋村");
        }
        
        
    }

    兩個handler
    package webservices.handlers;

    import org.apache.axis.AxisFault;
    import org.apache.axis.Handler;
    import org.apache.axis.MessageContext;
    import org.apache.axis.handlers.BasicHandler;
    import org.apache.commons.lang.*;
    import java.io.*;
    import java.util.*;

    /**
     * 日志handler ,handler在axis的地位,相當于servlet的filter!可以在所有的service中添加多個handler
     * 
    @author KT4600
     *
     
    */
    public class LogHandler extends BasicHandler{

        
    public void invoke(MessageContext arg0) throws AxisFault {
            Handler handler
    =arg0.getService();
            String logfilename
    =(String)this.getOption("filename");
            
    if(StringUtils.isEmpty(logfilename)){
                
    throw new AxisFault("日志文件不能為空","",null,null);
            }
            
    try {
                FileOutputStream fos
    =new FileOutputStream(logfilename,true);
                PrintWriter pw
    =new PrintWriter(fos);
                Date date
    =new Date();
                arg0.getMessage().writeTo(System.out);
                String result
    ="---";
                pw.println(result);
                pw.close();
            } 
    catch (Exception e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        
    }

    package webservices.handlers;

    import org.apache.axis.AxisFault;
    import org.apache.axis.MessageContext;
    import org.apache.axis.handlers.BasicHandler;
    import org.apache.axis.security.SecurityProvider;
    import org.apache.axis.security.simple.SimpleSecurityProvider;
    import org.apache.axis.session.Session;

    /**
     * 自己寫的認證handler,也可以使用axis自帶的,只需配置在server-config.wsdd中添加
     * <parameter name="allowedRoles" value="ronghao"/>   證證規則即可
     * 
    @author peidw
     *
     
    */
    public class AuthenticationHandler extends BasicHandler{

        
    public void invoke(MessageContext arg0) throws AxisFault {
            SecurityProvider provider 
    = (SecurityProvider)arg0.getProperty("securityProvider");
            
    if(provider==null){
                provider
    = new SimpleSecurityProvider();
                arg0.setProperty(
    "securityProvider", provider);
            }
            
    if(provider!=null){
                String userId
    =arg0.getUsername();
                String password
    =arg0.getPassword();
                
    //對用戶進行認證,如果authUser==null,表示沒有通過認證,拋出Server.Unauthenticated異常。
                Session session=arg0.getSession();
                System.out.println(
    "----------===xx----------------");
                org.apache.axis.security.AuthenticatedUser authUser
                
    = provider.authenticate(arg0);
                
    if(authUser==null)    
                    
    throw new AxisFault("Server.Unauthenticated","用戶驗證異常"null,null);
                
    //用戶通過認證,把用戶的設置成認證了的用戶。
                arg0.setProperty("authenticatedUser", authUser);
            }
            
        }
        
    }

    客戶端例子
    package test;

    import wsclient.myservices.*;

    import java.net.URL;
    import java.util.*;
    import javax.xml.namespace.QName;
    import org.apache.axis.client.*;

    import org.apache.wsif.*;
    import org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl;

    /**
     * axis1.x客戶端調用測試
     * 
    @author peidw
     *
     
    */
    public class MyServiceExe {
        
    /**
         * 使用axis的WSDL2JAVA調用WS服務,如果服務器端添加了簡單handler用戶驗證,則需要修改
         * ..SoapBindingStub類的createCall()方法,
         * 
    @throws Exception
         
    */
        
    public static  void handlerCallDemo()throws Exception{
            MyServicesService ms
    =new MyServicesServiceLocator();
            MyServices_PortType msp
    =ms.getMyServices();
            Book book
    =msp.getBookByIsbn("125-6922-10");
            System.out.println(book.getAuthor()
    +"-"+book.getBookname()+"-"+book.getIsbn());
            Map map
    =msp.getAllBookMap();
            Set keyset
    =map.keySet();
            Iterator it
    =keyset.iterator();
            String tmp
    =null;
            
    while(it.hasNext()){
                tmp
    =(String)it.next();
                System.out.println(tmp);
            }
        }
        
    /**
         * 通過動態接口方式調用,使用axis提供的client包
         * 最簡單的使用方式
         * 
    @throws Exception
         
    */
        
    public static void dynamicCall()throws Exception{
            String endpoint_1
    ="http://localhost:8000/axis/services/Version?wsdl";
            Service service 
    = new Service(); 
            Call call
    =(Call)service.createCall();
            call.setOperationName(
    new QName(endpoint_1,"getVersion "));
            call.setTargetEndpointAddress(
    new URL(endpoint_1));
            String result
    =(String)call.invoke(new Object[]{});
            System.out.println(
    "result="+result);
        }
        
    /**
         * 使用WSIF來調用axis發布的服務
         * <pre>
         * WSIF具有可對任何 Web 服務進行獨立于綁定的訪問的 API。
         * 它緊密依賴于 WSDL,因此可以調用可在 WSDL 中描述的任何服務。 
         * </pre>
         * 
    @throws Exception
         
    */
        
    public static void wsifCall()throws Exception {
            String url
    ="http://localhost:8000/axis/services/Version?wsdl";
            WSIFServiceFactory factory
    =WSIFServiceFactory.newInstance();
            
    //如果調用的方法需要進行用戶/密碼校驗,需執行下面代碼
            
    //AuthenticatingProxyWSDLLocatorImpl awsli=new AuthenticatingProxyWSDLLocatorImpl(url,"gaolong1","19831001"); //驗證連接
            WSIFService service=factory.getService(url,"http://localhost:8000/axis/services/Version","VersionService","http://localhost:8000/axis/services/Version","Version");
            WSIFPort port 
    = service.getPort();
            WSIFOperation operation 
    = port.createOperation("getVersion","getVersionRequest",null);//根據給定的操作名稱參數operationName,輸入元素名稱inputName,輸出元素名稱
            WSIFMessage input = operation.createOutputMessage();//設置輸入參數
            WSIFMessage output = operation.createOutputMessage();//設置輸出參數
            WSIFMessage fault = operation.createFaultMessage(); //異常信息
            operation.executeRequestResponseOperation(input,output,fault); //執行請求
            
            System.out.println(output.getObjectPart(
    "getVersionReturn"));
            
        }
        
    public static void main(String[] args)throws Exception{
            handlerCallDemo();
            dynamicCall();
            wsifCall();
        }
    }
    posted on 2007-10-25 16:25 有貓相伴的日子 閱讀(3537) 評論(0)  編輯  收藏 所屬分類: webservices
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 免费乱理伦在线播放| 亚洲精品无码久久一线| 成人久久久观看免费毛片| 亚洲精品无码不卡在线播HE | 亚洲成av人片天堂网无码】| 亚洲AV成人精品日韩一区18p| 久久美女网站免费| 中国亚洲呦女专区| 国产亚洲一区二区精品| 天天摸天天碰成人免费视频| 国产A∨免费精品视频| 亚洲AV无码久久久久网站蜜桃 | 女人张开腿给人桶免费视频| 国产免费牲交视频免费播放| 精品亚洲AV无码一区二区| 久久久久亚洲av成人无码电影 | 狠狠亚洲狠狠欧洲2019| 无码国产精品一区二区免费虚拟VR | 免费人成年激情视频在线观看| 污视频在线观看免费| 污污视频网站免费观看| 久久亚洲精精品中文字幕| 亚洲国产精品自在拍在线播放| 无码国产精品一区二区免费式直播 | 人人爽人人爽人人片av免费| 亚洲AV无码专区在线亚| 亚洲av不卡一区二区三区| heyzo亚洲精品日韩| 成年女人午夜毛片免费视频| 久久久久国产精品免费免费不卡| 国产亚洲精品国产福利在线观看| 亚洲理论片中文字幕电影| 亚洲精品白浆高清久久久久久 | 亚洲成人免费电影| 亚洲精品国精品久久99热一| 免费人成激情视频| 免费无遮挡无码视频网站| 成人奭片免费观看| 免费v片在线观看视频网站| 久久精品国产大片免费观看| 久久毛片免费看一区二区三区|