I think I have found the problem. It is mostly my fault, but I think a change or two in
InterfaceGenerator.appendComponentSource() would ease a lot of people's headaches in
the future.
My WebRemote methods are in a SFSB, with both a remote and local interface. However, the
remote and local interfaces are not the same (more methods are exposed via the local than
remote, including my WebRemote methods). The culprit in this situation lies with the
following snippet from that method:
if ((component.getType().equals(ComponentType.STATEFUL_SESSION_BEAN) ||
| component.getType().equals(ComponentType.STATELESS_SESSION_BEAN)) &&
| component.getBusinessInterfaces().size() > 0)
| {
| type = component.getBusinessInterfaces().iterator().next();
| }
Since the method getBusinessInterfaces() returns a Set, which is not ordered, and I have 2
interfaces on my SFSB, I have (roughly) a 50/50 chance of getting my local interface
returned first, which contains my WebRemote method stubs. If my remote interface is
returned first, no stubs.
The solution for me is easy at this point. Expose my WebRemote methods in the remote
interface as well, and it then does not matter which it grabs first.
However, in the long run, would it not make more sense to iterate all of the stateless/ful
session bean's interfaces looking for WebRemote methods?
Incidentally, I admit it is not a common use case to have your local and remote interfaces
be different, but the case still seems valid.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3962827#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...