我感觉在本机生成http://weblogic:7001/xml.xml然后通知SESSIONEJB读起http://weblogic:7001/xml.xml  ,简单点.

解决方案 »

  1.   

    http://weblogic:7001/servlet?xml="XML的具体内容"这是采用get方法,
    可以考虑用post方法提交就不存在url太长的问题了
      

  2.   

    to  CAYU(中原) 
    你说在本机生成一个XML,是指在中间件服务器那端生成吗?可是客户端如何在服务器那生成xml呀
      

  3.   

    客户端生成xml文档以后通过form把文档的位置传给中间件,然后用bean下载文档内容。
      

  4.   

    WEB SERVICES不是现成的吗,干吗自己搞
      

  5.   

    在前台,把xml放到Document对象里,通过servlet把Document对象传回后台!
      

  6.   

    两年前我就在用类似的方法了,现在我们的成了成熟的产品了,支持vc,delphi,java,等,支持http,socket等等
      

  7.   

    建议你采用xmldom对象生成和解析XML,然后用XMLHTTP进行客户端与服务器端的通信,不用刷新页面,几乎可媲美C/S系统。下面是一段通信的代码,记住用异步方式通信,否则客户端可能会造成“假死”现象。 try
    {
    //用于发送命令的XMLHTTP对象
    var oPost=new ActiveXObject("Microsoft.XMLHTTP");
    oPost.open("POST", uri, true);   //异步
    oPost.setRequestHeader("Content-Length", words.length);
    oPost.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");//这句必须要
    oPost.send(xmlstring);
    }
    catch(e)
    {
    alert(e.description +'\n\n创建Speaker对象失败!');
    }
      

  8.   

    ellee(抗日统一联盟-小鱼饵)你好,你写方法不错,但我还是有一点不太明白oPost.open("POST", uri, true);   //异步
    中的URL我指向一个什么呢 servlet吗?那我这个SERVLET中如何接收发过来的XML呢?当我在SERVLET中生成好XML中,我如何传给前台页面,前台页面又如何接收到我传过来的XML呢?
      

  9.   

    在SERVLET中你可以用request.getInputStream()来接收XML;在前台页面你可以用一个DOM对象来接收,如
    var oXML=oPost.responseXML;
    下面你可以对这个DOM对象进行处理了
    var currNode = oXML.documentElement.selectSingleNode("heading");或者可以用普通字符来接收,如
    alert(oPost.responseText);
      

  10.   

    如果使用xmlhttp可以參考這一貼。
    http://expert.csdn.net/Expert/topic/2130/2130332.xml?temp=.3312036
      

  11.   

    下面是从我程序里面拿出来的,供参考://==========系统总控程序 ========================
    //==========comm.html   ===========================//XMLDOM的状态发生变化时的事件句柄
    var maxConnectErrorCount=3;
    var connectErrorCount=0;
    function readyStateChange()
    {
        dom = listener.dom;
        if (dom.readyState == 4)    //接收完毕
        {
         if(dom.parseError.errorCode != 0)  //解析有错
            {
             if(dom.parseError.errorCode==-2146697211)  //错误为:连接服务器失败
                {
                 connectErrorCount++;
                    if(connectErrorCount>maxConnectErrorCount)
                    {
                     listener.stopListen();
    // alert("连接服务器失败超过"+maxConnectErrorCount+"次,系统将退出。请重新登录!");
    }
                }
            }
            else
            {
             connectErrorCount=0;
                displayer.display(dom);
            }
        }
    }//显示解析xmldom时的错误信息
    function displayError(dom)
    {
    var em='';
        em=em + ' errorCode : '+ dom.parseError.errorCode+'\n';
        em=em + ' filepos   : '+ dom.parseError.filepos+'\n';
        em=em + ' line      : '+ dom.parseError.line+'\n';
        em=em + ' linepos   : '+ dom.parseError.linepos+'\n';
        em=em + ' reason    : '+ dom.parseError.reason+'\n';
        em=em + ' srcText   : '+ dom.parseError.srcText+'\n';
        em=em + ' url       : '+ dom.parseError.url+'\n';
        alert(em);
        delete(em);
    }
    //==========发送请求的通信类========================
    //==========Speaker.js   ===========================
    //==========Speaker类文件===========================
    /**
     * 发言者类
     *
     * 1、该对象只负责向服务器端发送请求,不负责接收其响应;
     * 2、该对象是用户活动驱动的:只有在用户需要往发送请求
     *      的时候才启动。
     *///定义一个发言的类
    function Speaker()
    {
    try
    {
    //用于发送命令的XMLHTTP对象
    this.oPost=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e)
    {
    alert("Speaker() \n" + e.description +'\n\n创建Speaker对象失败!');
    return null;
    } this.speak = speak;
    }
    function speak(uri, xmlString)
    {
    try
    {
    this.oPost.open("POST", uri, true);   //异步
    this.oPost.setRequestHeader("Content-Length", xmlString.length);
    this.oPost.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//这句必须要
    this.oPost.send(xmlString);
    }
    catch(e)
    {
    alert(e.description +'\n\n发送数据失败,系统将退出!');
    destory();
    } return false;
    }
    //==========接受应答的通信类========================
    //==========Listener.js   ===========================
    //==========Listener类文件===========================
    /**
     * 监听者类
     *
     * 1、自动启动;
     * 2、负责监听服务器端相关状态的变化,并通过XMLDOM接收该变化的结果;
     *//**
    * 构造监听者
    * uri  监听的uri
    */
    function Listener(uri)
    {
    this.uri = uri; this.timer = null;
    this.interval = 1000;
    this.isListening = true; try
    {
            //初始化监听控件dom
            this.dom = new ActiveXObject("Microsoft.XMLDOM");
            this.dom.async=true;  //异步
            this.dom.onreadystatechange=readyStateChange;
    }
    catch(e)
    {
    alert("Listener(uri) \n" + e.description +'\n\n创建Listener对象失败!');
    return null;
    } this.listen = listen;
    this.startListen = startListen;
    this.stopListen = stopListen;
    }//启动自动刷新
    function startListen()
    {
    if(this.isListening==false)
         return; this.listen(); //注意:setTimeout()方法是Listener类的外部方法,在调用
    //Listener类的方法时,需要实例化了的Listener对象作前导
    //这里是:listener
    this.timer = setTimeout("listener.startListen()", this.interval);
    }//停止自动刷新
    function stopListen()
    {
    clearTimeout(this.timer);
    this.timer = null;
    this.isListening = false;
    }
    //获取最新的XML数据
    function listen()
    {
    try
    {
    this.dom.load(this.uri);
    }
    catch(e)
    {
    alert("装载数据失败!URL = "+ this.uri + "\n\n" + e.description + "\n\n系统将停止自动刷新!");
    stopListen();
    return;
    }
    }//==========Displayer.js   ===========================
    //==========Displayer类文件===========================/**
    * 显示者类:显示返回信息
    *
    * 1、负责根据后端DOM中数据的变化,更新前端的面板显示;
    *///构造显示者
    function Displayer()
    {
    this.displayCanvas = null;  //显示信息的面板(如:div等) this.A = null;  
    this.B = null;  
    this.count = 0;             //记录条数

    this.getRecords = getRecords;
    this.display = display;
    this.output = output;
    }
    //显示XMLDOM数据
    function display(dom)
    {
    if(getRecords(dom)==false)
    return;

    for(i=0; i<this.count; i++
    output(i);
    }
    //从XMLDOM对象获取数据
    function getRecords(dom)
    {
    ret = false;
    this.count = 0; try
    {
    this.A = dom.documentElement.selectNodes("//root/record/A");
    this.B = dom.documentElement.selectNodes("//root/record/B"); this.count = this.A.length;
    ret = true;
    }
    catch(e)
    {
    alert("updateData() \n " + e.description + "\n\n解析应答数据失败!");
    } return ret;
    }//将信息输出到显示面板上
    function output(i)
    {
    displayCanvas.innerHTML = this.A(i).text + this.B(i).text;
    }