Expand my Community achievements bar.

FDS 2.5 with Hibernate

Avatar

Former Community Member
Hi,



I'm working on my first FDS app connecting to MySQL with
Hibernate. I've managed to create all the necessary mapping files
and deploy my app to JBOSS 4.0 server. I get no errors or warnings
(with DEBUG enabled) from JBOSS when deploying the app and I get no
compile errors when I build the app. I can see all the Hibernate
files are being read by JBOSS successfully. It seems promising that
the app should work. My hibernate.cfg.xml and hbm.xml's also are
being read. MySQL connector is found.



When I run this simple app (it's just a 2 column datagrid
using a data service I've configured in
data-management-config.xml), I get the following:



[MessagingError message='Destination 'hibernateStates' has no
channels defined and the application does not define any default
channels.']

at
mx.messaging.config::ServerConfig$/::internalGetChannelSet()

at mx.messaging.config::ServerConfig$/getChannelSet()

at
mx.messaging::MessageAgent/mx.messaging:MessageAgent::initChannelSet()

at
mx.messaging::MessageAgent/mx.messaging:MessageAgent::internalSend()

at
mx.messaging::Producer/mx.messaging:Producer::internalSend()

at mx.messaging::AbstractProducer/connect()

at mx.data::DataStore/
http://www.adobe.com/2006/flex/mx/internal::initialize()

at mx.data::ConcreteDataService/fill()

at mx.data.mxml::DataService/fill()

at TFAppMain/___Button1_click()



What does this mean?



Here is my data-management-config.xml:



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

<service id="data-service"
class="flex.data.DataService">



<adapters>

<adapter-definition id="actionscript"
class="flex.data.adapters.ASObjectAdapter" default="true"/>

<adapter-definition id="java-dao"
class="flex.data.adapters.JavaAdapter"/>

</adapters>



<default-channels>

<channel ref="my-rtmp" />

</default-channels>



<destination id="hibernateStates" channels="my-rtmp">

<adapter ref="java-dao" />

<properties>

<use-transactions>true</use-transactions>


<source>flex.data.assemblers.HibernateAssembler</source>

<scope>application</scope>

<metadata>

<!--This is the unique identifier from the
hibernate-entity bean -->

<identity property="id" />

</metadata>

<network>

<session-timeout>20</session-timeout>

<paging enabled="false" pageSize="10" />

<throttle-inbound policy="ERROR" max-frequency="500"
/>

<throttle-outbound policy="REPLACE" max-frequency="500"
/>

</network>

<server>


<hibernate-entity>TFHibernate.States</hibernate-entity>

<fill-method>

<name>fill</name>

<params>java.util.List</params>

</fill-method>

<fill-configuration>

<use-query-cache>false</use-query-cache>

<allow-hql-queries>true</allow-hql-queries>

</fill-configuration>

</server>

</properties>

</destination>



</service>



I'm not sure what else I can check, seems like there are no
errors until runtime. Any suggestions would be really helpful!
:-)
5 Replies

Avatar

Former Community Member
Somehow FDS/LCDS thinks that hibernateStates does not define
a channel (i.e. my-rtmp). Do you happen to use runtime
configuration? In other words, are you creating hibernateStates
with a bootstrap service or a remote object?



If not, could you try this for me? Before you call
DataService.fill, try to set your DataService's channelSet
manually. Something like this:



var myDataService:DataService = new
DataService("hibernateStates");

var myChannelSet:ChannelSet = new ChannelSet();

myChannelSet.addChannel(new RTMPChannel("my-rtmp", "[put url
of my-rtmp here]"));

myDataService.channelSet = myChannelSet;

myDataService.fll();



And let me know if this works.

Avatar

Former Community Member
Mete,



Thank you so much for your quick reply. I'm so close to
getting connectivity with my database after a lengthy period of
troubleshooting security issues, building mapping files,
configuring data services, etc. I am not using runtime
configuration.

However, I am not sure how to incorporate the code you
suggested into my 'first simple app'. I tried adding the code but
was getting errors.



Here is what the code looks like now. Maybe there is
something obvious I am doing wrong:



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

<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml"
layout="absolute">



<mx:ArrayCollection id="myArray" />



<mx:DataService id="ds" destination="hibernateStates"
autoCommit="true" />



<mx:DataGrid x="135" y="94" dataProvider="{myArray}">

<mx:columns>

<mx:DataGridColumn headerText="State"
dataField="statename"/>

<mx:DataGridColumn headerText="Abbrev"
dataField="stateabbrev"/>

</mx:columns>

</mx:DataGrid>

<mx:Button label="Get Data"
click="ds.fill(myArray,'states.all',[])" x="135" y="10"
width="202"/>

</mx:Application>



Thanks,

Laurie

Avatar

Former Community Member
Ok, this is what you need to do:



<mx:Application ...
creationComplete="creationCompleteHandler()">



<mx:Script>

<![CDATA[

import mx.messaging.ChannelSet;

import mx.messaging.channels.RTMPChannel;



private function creationCompleteHandler():void

{

var myChannelSet:ChannelSet = new ChannelSet();

myChannelSet.addChannel(new RTMPChannel("my-rtmp", "[put url
of my-rtmp here]"));

ds.channelSet = myChannelSet;

}

]]>

</mx:Script>

</mx:Application>

Avatar

Former Community Member
Mete,



Yes, I added the script into my code, get no errors and again
same message comes up.



I also verified in my console log that rtmp is successfully
created. So, it seems that either way this error is generated.



Here are the last few lines of the log:



17:16:57,296 INFO [SettingsFactory] Deleted entity synthetic
identifier rollback: disabled

17:16:57,296 INFO [SettingsFactory] Default entity-mode: pojo

17:16:57,296 INFO [SessionFactoryImpl] building session
factory

17:16:57,406 INFO [SessionFactoryObjectFactory] Factory name:
TFSessionFactory

17:16:57,406 INFO [NamingHelper] JNDI InitialContext
properties:{}

17:16:57,406 INFO [SessionFactoryObjectFactory] Bound factory
to JNDI name: TFSessionFactory

17:16:57,406 WARN [SessionFactoryObjectFactory]
InitialContext did not implement EventContext

17:16:57,500 INFO [STDOUT] [Flex] Initializing the NIO RTMP
Server.

17:16:57,546 INFO [STDOUT] [Flex] RTMP-Server listening on
port:2038

17:16:57,609 INFO [EARDeployer] Started J2EE application:
file:/C:/jboss-4.0.5.GA/server/default/deploy/TFAppEAR.ear



Thanks,

Laurie

Avatar

Former Community Member
Resolved:



I was setting my -services argument wrong.



In Project Properties, I went into Flex Compiler options and
changed Additional Compiler Arguments from my incorrect folder to:



-services
"C:\EclipseWorkspace\TFApp\WebContent\WEB-INF\flex\services-config.xml"



Since I was deploying my app (TFApp) as an .EAR, it was
confusing to me as to what the argument should be, but changing it
to my workspace services-config.xml path, not the Server deployment
path resolved the problem.