z_yes163 2010-03-22 10:17
浏览 191
已采纳

flex 用RemoteObject 调用不了JAVA 各位大侠帮我看看!!1

MXML 文件如下

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

<mx:Script>
    <![CDATA[
        import mx.controls.List;
        import mx.controls.Alert;
        import mx.collections.ArrayCollection; 
        import mx.rpc.events.ResultEvent; 
        [Bindable]
        public var lis:List = null;
        public function gg():void
        {
        var id:String =  testone.text.toString();
        h.findById(id);//没有调用到java
        mx.controls.Alert.show("123456");
        }
        public function yy(event:ResultEvent):void
        {
            lis = event.result as List;
            //return lis;
        }
    ]]>
</mx:Script>
<mx:RemoteObject id="h" destination="userService" result="yy(event)"/>

<mx:DataGrid x="100" y="192" id="datagrid" dataProvider="{lis}" fontSize="15">
    <mx:columns>
        <mx:DataGridColumn headerText="编号" dataField="ID"/>
        <mx:DataGridColumn headerText="姓名" dataField="NAME"/>
        <mx:DataGridColumn headerText="性别" dataField="SEX"/>
    </mx:columns>
</mx:DataGrid>
<mx:ComboBox x="100" y="128" id="cbb"></mx:ComboBox>
<mx:TextInput x="100" y="76" id="testone"/>
<mx:Label x="30" y="78" text="请输入ID:" fontSize="15"/>
<!-- 此处为触发函数-->
<mx:Button x="218" y="343" label="Button" click="gg();"/>

/mx:Application

remoting-config.xml如下

<?xml version="1.0" encoding="UTF-8"?>
class="flex.messaging.services.RemotingService">

<adapters>
    <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>

<default-channels>
    <channel ref="my-amf"/>
</default-channels>

<destination id="userService">
    <properties>
        <source>userServiceS</source>
    </properties>
</destination>

Spring Application.xml文件如下


value="model.TestUser"/>

<bean id="userServiceS" class="service.ServiceImp">
    <property name="userOfSysListDAO" ref="userOfSysListDAO" />
</bean>

现在是调用不了JAVA 不知道什么问题!
后台JAVA 方法
@SuppressWarnings("unchecked")
public List findById(String id) {
System.out.println("flex来调用我了");//打印没有出来
return userOfSysListDAO.findList("from test_user as t where t.id="+id);

}
  • 写回答

5条回答 默认 最新

  • iteye_11336 2010-03-22 16:09
    关注

    如果Flex RemoteOjbect和Hibernate+Spring都没有问题的情况下
    LCDS整合Spring需要注意
    需要手动新建SpringFactory 实现 flex.messaging.FlexFactory 接口
    具体代码如下:
    [code="java"]
    package .;

    import flex.messaging.FactoryInstance;
    import flex.messaging.FlexFactory;
    import flex.messaging.config.ConfigMap;

    public class SpringFactory implements FlexFactory {

    @Override
    public FactoryInstance createFactoryInstance(String id, ConfigMap properties ) {
           SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);
            instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));
            return instance;
    
    }
    
    @Override
    public Object lookup(FactoryInstance inst) {
    
         SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
            return factoryInstance.lookup();
    }
    
    @Override
    public void initialize(String arg0, ConfigMap arg1) {
    
    
    }
    

    }
    [/code]
    新建SpringFacotryInstance extends SpringFacotry
    具体代码如下:
    [code="java"]
    package .;

    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.NoSuchBeanDefinitionException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;

    import flex.messaging.FactoryInstance;
    import flex.messaging.config.ConfigMap;
    import flex.messaging.services.ServiceException;

    public class SpringFactoryInstance extends FactoryInstance {

     SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties)
     {
         super(factory, id, properties);
     }
    
    
     public Object lookup()
     {
    
         ApplicationContext appContext =     (WebApplicationContext) flex.messaging.FlexContext.getHttpRequest().getSession() .getServletContext().getAttribute("org.springframework.web.context.WebApplicationContext.ROOT");                         
         String beanName = getSource();         
         try
         {
            return appContext.getBean(beanName);
         }
         catch (NoSuchBeanDefinitionException nexc)
         {
             nexc.printStackTrace();
             ServiceException e = new ServiceException();
    
             throw e;
         }
         catch (BeansException bexc)
         {
             ServiceException e = new ServiceException();
             e.printStackTrace();
             throw e;
         }   
     }      
    

    }
    [/code]
    最后需要在LCDS的service-config.xml文件中

    标签之后加入
    [code="xml"]



    [/code]
    这样应该Flex是用RemoteOjbect对象调用JAVA应该就没有问题了。
    我们老大是这么跟我讲的,呵呵,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决