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]>

Reply via email to