I cannot use CMP because I have very complex queries, and I cannot alter database structure. But I read that BMP are even worse (if you read multiple BMPs, only primary keys are read and afterwards rest data will be read). As I understand. If so it's quite slow.
I don't know what about statless and stateful beans. I am reading and trying them now.
But as I understand when I invoke remote method that returns object, object that was returned will be local and cannot use server functionality (I mean directly). For instance in DCOM when object returned its methods will be invoked remotely (if it isn't stated otherwise), I mean I can use server functionality.
I can use two ways to solve this:
1) I can use Objects with data as a C (language) structs and session beans as functions. This is a funny thing but after everybody sad that C is an extremely uncomfortable technology we returned to a kind of it in Java.
2) I can use wrappers. Client will have wrapper that will hide this by invoking session beans itself. The huge disadvantage is that I have to write a lot of wrappers.
I think (by now) that the biggest disadvantage of J2EE is that it tries to solve everything, and it isn't flexible (for example sometimes I can live without object caching but all EJBs cached (CMP and BMP)), this is the cause of BMPs problems.
I want to hear that do you think about these problems. Can anyone give me some examples of large systems that use J2EE (at least 50-200 concurrent users)?
I am not telling that this is a worthless technology (i am not so good at it and I can miss some vital parts) but it's too raw at the moment (again for my opinion).
P.S. I think Enterprise is redundant word in J2EE at least at the moment.