您的位置:首页 > 运维架构 > Tomcat

flex部署到tomcat,远程访问无法与java交互的问题

2012-11-24 20:19 387 查看
首先,flex与java交互有很多种方法,我用的是blazeds,这个问题主要还是

endpoint="***",一定不要写localhost,必须是真实IP地址

另外,不要在myeclipse里装载项目,一定要导出发行版,然后外部启动tomcat,最后还要记得沙箱安全奥!

<mx:RemoteObject destination="hello" id="h"

result="gg(event)"

endpoint="http://localhost:8080/flexweb/messagebroker/amf" >

</mx:RemoteObject>

flex4出来一段时间了,去年看了一段时间flex3,后来由于暂时没有项目需求.所以flex遗忘了很多.这次使用flex4+myeclipse8.5录制了一个视频.以免时间长了遗忘.

        软件环境:windows7+flex4+myeclipse8.5+blazeds

        功能描述:分别用代码实现了三种flex4与Java通信

        三种方式:

                       1 flex 与普通java类通信RemoteObject

                       2 flex 与服务器交互HTTPService

                       3 flex与webservice交互WebService

        1 flex 与普通java类通信RemoteObject

       普通Java类:        


package com.flex.demo;




/**


 * 功能描述:该类用来实现flex与普通java类中的方法通信


 * @author Administrator


 *


 */


public class SimpleService {




    public String sayHello(String name){


        return "Hello, "+name;


    }


}



        配置说明:配置remoting-config.xml


<destination id="myservice">


        <properties>


            <source>com.flex.demo.SimpleService</source>


        </properties>


    </destination>
        调用


<!--flex 与普通java类通信-->


        <s:RemoteObject id="serv" destination="myservice" fault="serv_faultHandler(event)" result="serv_resultHandler(event)">


            


        </s:RemoteObject>
        2flex 与服务器交互HTTPService

        servlet代码        


package com.flex.demo;




import java.io.IOException;




import javax.servlet.ServletException;


import javax.servlet.http.HttpServlet;


import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpServletResponse;




/**


 * 功能描述:该servlet用来与flex进行交互


 * @author Administrator


 *


 */


@SuppressWarnings("serial")


public class SimpleServiceServlet extends HttpServlet {


    


    @Override


    protected void service(HttpServletRequest request, HttpServletResponse response)


            throws ServletException, IOException {


        request.setCharacterEncoding("utf-8");


        response.setCharacterEncoding("utf-8");


        response.getWriter().write("我是服务器");


    }


}



        调用


<!-- flex 与服务器交互-->


        <s:HTTPService id="service" fault="service_faultHandler(event)" result="service_resultHandler(event)" url="http://localhost:8080/flexdemo/simpleServiceServlet">


            


        </s:HTTPService>
        3flex与webservice交互WebService


<!--flex与webservice交互这里调用一个天气预报的webservice-->


        <s:WebService id="ws" 


                      wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl" 


                      fault="ws_faultHandler(event)" 


                      result="ws_resultHandler(event)" 


                      showBusyCursor="true">


            <!-- 第二种调用webservice的方法<s:operation>-->


            <!-- <s:operation name="getWeatherbyCityName"> webservice中的方法名-->


            <s:operation name="getWeatherbyCityName">


                <!--传递的参数-->


                <s:request>


                    <!--参数名称必须与webservice中定义的参数名一致否则调用不成功报错-->


                    <theCityName>


                        {city.text}


                    </theCityName>


                </s:request>


            </s:operation>


            


        </s:WebService>
        三种方式完整的配置例子


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


<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 


               xmlns:s="library://ns.adobe.com/flex/spark" 


               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"


               creationComplete="service.send()"


               >


    <fx:Script>


        <![CDATA[


            import mx.controls.Alert;


            import mx.rpc.events.FaultEvent;


            import mx.rpc.events.ResultEvent;




            //错误处理函数


            protected function serv_faultHandler(event:FaultEvent):void


            {


                Alert.show("调用失败了:"+event.fault.message as String,"提示");


            }




            //成功调用函数


            protected function serv_resultHandler(event:ResultEvent):void


            {


                Alert.show("调用成功了:"+event.result as String,"提示");


            }






            protected function service_faultHandler(event:FaultEvent):void


            {


                Alert.show("调用失败了:"+event.fault.message as String,"提示");


            }






            protected function service_resultHandler(event:ResultEvent):void


            {


                Alert.show("调用成功了:"+event.result as String,"提示");


            }






            protected function ws_faultHandler(event:FaultEvent):void


            {


                Alert.show("调用失败了:"+event.fault.message as String,"提示");


            }


            


            //调用成功了


            protected function ws_resultHandler(event:ResultEvent):void


            {


                trace(event.result);


                lbl.text=(String)(event.result);


            }




            //第一种调用webservice的方法


            //此方法调用webservice


            protected function btn_clickHandler(event:MouseEvent):void


            {


                //ws.getWeatherbyCityName(city.text);


                //第二中调用webservice的方法


                ws.getWeatherbyCityName.send();


            }




            


            


        ]]>


    </fx:Script>


    <fx:Declarations>


        <!-- 将非可视元素(例如服务、值对象)放在此处 -->


        


        <!--flex 与普通java类通信-->


        <s:RemoteObject id="serv" destination="myservice" fault="serv_faultHandler(event)" result="serv_resultHandler(event)">


            


        </s:RemoteObject>


        


        <!-- flex 与服务器交互-->


        <s:HTTPService id="service" fault="service_faultHandler(event)" result="service_resultHandler(event)" url="http://localhost:8080/flexdemo/simpleServiceServlet">


            


        </s:HTTPService>


        


        <!--flex与webservice交互这里调用一个天气预报的webservice-->


        <s:WebService id="ws" 


                      wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl" 


                      fault="ws_faultHandler(event)" 


                      result="ws_resultHandler(event)" 


                      showBusyCursor="true">


            <!-- 第二种调用webservice的方法<s:operation>-->


            <!-- <s:operation name="getWeatherbyCityName"> webservice中的方法名-->


            <s:operation name="getWeatherbyCityName">


                <!--传递的参数-->


                <s:request>


                    <!--参数名称必须与webservice中定义的参数名一致否则调用不成功报错-->


                    <theCityName>


                        {city.text}


                    </theCityName>


                </s:request>


            </s:operation>


            


        </s:WebService>


        


        


    </fx:Declarations>


    <s:TextInput x="488" y="72" id="city"/>


    <s:Button x="633" y="72" label="查看" id="btn" click="btn_clickHandler(event)"/>


    <s:Label x="224" y="128" id="lbl" width="820" height="376"/>


</s:Application>



        初次接触flex的朋友,看上面的肯定很迷惑,因此这里录制了视频教程,视频的质量是蛮好的,该视频从头至尾演示了flex4整合Java的过程.为了方便在windows平台下播放,该视频默认导出格式为exe,在此说明该文件并非病毒,实乃视频文件,大家可放心观看.点我下载flex4与Java交互演示视频

        视频截图:


 



        点我下载完整的项目文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FLEX JAVA Tomcat
相关文章推荐