Hi,
Yes I see it is possible to solve problems this kind.
I need transparent distributed objects in my projects, It is because I
speak a lot about ARMI. I am afraid this
can be difficult to understand for my coworkers, but will fink a lot about
this before next project. I think
Transparent Persistence will be the first revolution in my company.
BTW. I am not kidding about ARMI over DCOM I have spend 2 year with
this stuff ( ActiveX, win32, IUnknown, IDispatch , ......,"Ole
Automation", .... )
and I can help to implement this.
At 11:21 AM 1/27/2002 +0000, you wrote:
>Juozas,
>
>><skip>
>>
>>>>But I don't know how to handle "By Value".
>>>>void myMethod( MyInterfaceType mt ){
>>>> mt.setSomething("X");//Don't understand how to handle this ( is X
>>>> set on copy of Object ? )
>>>> }
>>>
>>>
>>>X will be a copy of the object if pass by value or over the wire.
>>>I'm not quite sure what your asking here.
>>
>>
>>Yes, communication is my problem :(
>>I try to see framework or API as user .
>>I see two problems in "transparence". Distributed and Persistent objects
>>have problem with
>>"Fatal Errors" like "Connection is lost" and "By Value" then users code
>>tries to set something on copy of object.
>>Transparent objects doe's not implement any "Tag Interface" and doe's not
>>throw checked Exceptions
>>specific for way they are marshaled.
>>//////////////////////////////////////////////////////////////////////////
>>Problem 1 :
>>users code ("Fatal Errors specific for framework implementation" )
>>
>> void myMethodUsesTransparentObject( Transparent transparent ){
>> try{
>> transaction.begin();
>> transparent.doSometing();//throws some App Exception
>> transparent.setSomething();
>> .........................................
>> transaction.commit();
>>
>> }catch(SomeCheckedAppException sce){
>> log(sce);
>> transaction.rollback();
>> }
>> // I forgot to handle "Connection is lost " and compiler says nothing.
>> // My transaction is incomplete and it is very possible I have a
>> "Lock" forever on some resource.
>> // It can be impossible to find this bug for user. We need solution,
>> I don't have it.
>
>For the connection failures issue, the client-side user is informed via a
>AltrmiInvocationException. This can be caught in a number of places. My
>preference would be in a single nexus :
>
>void initialize() {
> try {
> // method calls
> }catch ( AltrmiInvocationException ae ) {
> if (transaction != null) { transaction.rolback(); }
> getLogger().error("blah",ae);
> throw ae; // or a new one.
> }catch (Throwable) {
> // something similar.
> } }
>
>Of course with a bean container a "policy" can be set for a bean, so that
>predictable actions take place.
>
>> }
>>
>>//////////////////////////////////////////////////////////////////////////
>>
>>Problem 2 :
>>
>>User calls my transparent objects he don't know marshaling stuff,
>>implements "callbacks" sets "Context" ... .
>>He knows :
>>virtual void my_cpp_method( transparent object )=0;// "By Value"
>>irtual void my_cpp_method1( transparent & object )=0;// "By Reference"
>>procedure MyPascalProcedure( var aObject : TTransparent ) virtual
>>abstract; (* "Always By Reference " *)
>>public void myJAVAMethod(Transparent transparent);// sometimes "By value"
>>? Transparent has no "Tag" interface
>>User knows usual stuff, and "Transparence" must become usual.
>
>In this case, the class containing the method myJAVAMethod() is a facade
>and proxyed to an equivalent on the server. You are worried about
>"Transparent" class and how AltRMI knows whether it is pas by value or by
>reference (a facade). Easy, at time of publication, the developer
>designates a number of additional interfaces as facades rather than pass
>by value. If it is known that Transparent has setter functions that could
>cause problems make it an addition facade. There is no need for a Tag
>(Marker?) interface. The downside is that Transparent.class needs to be
>an interface with one or more impls. But then that is the same rule taht
>RMI has for solving the same issue.
>
>>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
>>
>>
>>Very possible to train users, write books, documentation, I don't know is
>>it solution or not.
>>I have no solution for this two problems.
>>It is because I trying to think as user, I must think about my team it is
>>my job.
>>I like transparence, but I think it can kill users project if will not
>>solve my problems.
>
>I hope I have addressed your concerns Juazos. I think you know yourself
>that you're little hard to understand. Sadly so I am, but I don't have
>the excuse of having English as a first language ;-)
>
>Regards,
>
>- Paul
>
>
>--
>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>