#40 unless (defined %{"${class}::"}) fails for O/O SOA

0.55
closed-fixed
None
5
2007-10-02
2004-02-19
No

Discussion

  • Matt Hahnfeld

    Matt Hahnfeld - 2004-02-19
    • summary: "unless (defined %{"${class}::"}) fails for O/O SOAP --> unless (defined %{"${class}::"}) fails for O/O SOAP
     
  • Matt Hahnfeld

    Matt Hahnfeld - 2004-02-19

    Logged In: YES
    user_id=10179

    See:
    http://groups.yahoo.com/group/soaplite/message/3059
    http://groups.yahoo.com/group/soaplite/message/3063

    Basically, under certain circumstances methods aren't loaded
    when multiple processes are answering requests that deal
    with objects returned by SOAP. In our case, it was when we
    were using Apache::SOAP to create a SOAP object and then
    call methods on that object. If a single Apache process was
    handling the requests, then there were no issues, but as
    soon as a second Apache process kicked in we would start
    getting errors about methods not being loadable.

    The symptom is usually the following fault, which is
    returned even if the class and method exist:

    Denied access to method ($method_name) in class ($class)

    I've attached our solution to the problem in a patch. This
    fixes the problem for us, but I can't guarantee it will fix
    it for anyone else :)

     
  • Byrne Reese

    Byrne Reese - 2004-09-27
    • milestone: --> 0.55
    • summary: unless (defined %{"${class}::"}) fails for O/O SOAP --> unless (defined %{"${class}::"}) fails for O/O SOA
    • status: open --> open-fixed
     
  • Byrne Reese

    Byrne Reese - 2004-09-27

    Logged In: YES
    user_id=28043

    Patch incorporated. Thank you. I will run this against our
    battery of unit tests and see if it turns up any problems.
    Otherwise, expect it to be released with SOAP::Lite v0.65.

     
  • Byrne Reese

    Byrne Reese - 2004-09-27

    Logged In: YES
    user_id=28043

    I found an instance in which this patch does not work. If
    the user has created a module inline using a BEGIN block,
    where the file does not actually exist on the filesytem by
    name, then this patch fails. However, I combined (using an
    OR) the two logical statements. Resulting code:

    unless (exists($INC{join '/', split /::/, $class.'.pm'}) ||
    defined(%{"${class}::"})) {

     
  • Martin Kutter

    Martin Kutter - 2007-10-02
    • assigned_to: nobody --> kutterma
    • status: open-fixed --> closed-fixed
     
  • Martin Kutter

    Martin Kutter - 2007-10-02

    Logged In: YES
    user_id=884175
    Originator: NO

    Closed as Byrne already fixed this.

     

Log in to post a comment.