EJB and Flex Integration, V1.1
By
RyanJNorris
January 16, 2007
5,927 Downloads
6 votes
An new version of Peter Martin's EJB factory with EJB3 Support for both local and remote EJBs.
| License: | Freeware |
|---|---|
| Language: | |
| Cost: | Free |
| Platform: | Flash Player 9 |
| File format: | ZIP | 815.0 KB |
Additional extension information
| Author: | RyanJNorris |
|---|---|
| Author website: | Not available |
| Date published: | January 16, 2007 |
| Approval: | None |
| Compatible product(s): | Flex 2.0 |
Reviews
1-3 of 3 reviews | Show all reviews
Dan2310 04-Jun-10
According to the source this library does not support any other scope that "request". So it is quite useless for stateful session beans.
If you need support for the scopes "session" or "application" have a look at http://dev.3m5-extra.net/blog/2010/06/04/ejb3factory-for-blazeds/
Dan2310 02-Jun-10
I tried to use an EJB3 stateful session bean but I get a new bean instance at every request. The session id is submitted at every http request, normal java beans within the WAR project works. What might be the problem? I even tried the application scope but this did not work, too.
Here's my stateful session bean:
---------------------------------------------------------------------
package test.bean;
import javax.ejb.Stateful;
import test.model.User;
@Stateful
public class UserBean implements UserLocal {
private User user;
public User getUser() {
System.out.println(this + "#getUser -> " + user);
return user;
}
public boolean isLoggedIn() {
return user != null;
}
public User login(String login, String password) {
user = new User();
user.setFirstName("Klaus");
user.setLastName("Kleber");
user.setLogin(login);
user.setPassword(password);
System.out.println(this + "#login -> " + user);
return user;
}
}
---------------------------------------------------------------------
Here's my remoting-config.xml:
---------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" 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="login">
<properties>
<source>test.service.LoginService</source>
<scope>session</scope> <!-- This works -->
</properties>
</destination>
<destination id="user">
<properties>
<factory>ejb3</factory>
<source>Wendel FLCD Online - EAR/UserBean/local</source>
<scope>session</scope> <!-- This does not work -->
</properties>
</destination>
</service>
---------------------------------------------------------------------
Here's the output of the UserBean:
---------------------------------------------------------------------
21:34:23,926 INFO [STDOUT] test.bean.UserBean@6b0b91#login -> test.model.User@124026
21:34:38,903 INFO [STDOUT] test.bean.UserBean@170e44c#getUser -> null
21:34:43,675 INFO [STDOUT] test.bean.UserBean@e0aaf1#getUser -> null
21:34:46,452 INFO [STDOUT] test.bean.UserBean@1a009d4#getUser -> null
---------------------------------------------------------------------
PS: I'm using Blaze DS 4 and JBoss 5.1.
thenewmexican62 23-Oct-09
I have been attempting to you use your contributed EJB factory.
Thanks for the work. However. My experience using this factory has been less than good.
I'm using EJB3 implemented on JBoss 5.1.
OS: Linux
JDK: 1.6
Here are my findings.
1) The entry in the flex/remoting-config.xml that is described in your read me
is incorrect.
instead of <source>come.beanclass.EJBName</source>
it should be <source>someJNDINameSpaceEJB</source>
2) The remote interface does not work at all. Only the local. However, this may not be the fault of yours or BlazeDS. It could be a permissions issue.
3) I could not pass a custom Class instance to the EJB method directly.
ie.. someEbj.processUsing(myCustomClassInst);
instead. I had to declare an array and push the myCustomClassInst into the array as such var params:Array = [];
params.push(myCustomClassInst);
someEjb.processUsing(params);
In the first calling scenario I could see via logging, that the myCustomClassInst
was being serialized just fine. However the processUsing(myCustomClassInst)
method was never called, in either local or remote invocation.
The local invocation works fine with the Array argument being passed,
but, not a custom argument directly.
Thanks again.