Loading ...
Sorry, an error occurred while loading the content.
 

long in Java Server

Expand Messages
  • eat_lemon@yahoo.ca
    Hi, I have a perl client and a Java server using Apach Soap. When I pass a number to the Java server and it is expecting a long , but soaplite packages it as
    Message 1 of 7 , Nov 22, 2001
      Hi,

      I have a perl client and a Java server using Apach Soap. When I pass
      a number to the Java server and it is expecting a "long", but
      soaplite packages it as an "int". The server didn't complain, but
      I'm just worry that this might cause problems if the number is bigger
      than 32-bit. Will the int be properly cast to a long on the server
      side? Do I need to write an as_long to pass in long probably?

      Any help is greatly appreciated,

      Simon
    • Paul Kulchenko
      Hi, Simon! ... It depends on Java impelemtation. You may type it as long to be on a safe side. It could be as simple as this: $long = SOAP::Data- type(long =
      Message 2 of 7 , Nov 23, 2001
        Hi, Simon!

        > than 32-bit. Will the int be properly cast to a long on the server
        > side? Do I need to write an as_long to pass in long probably?
        It depends on Java impelemtation. You may type it as long to be on a
        safe side. It could be as simple as this:

        $long = SOAP::Data->type(long => 123);

        It can be done for many other types also. If you use wrong
        (undeclared) types, SOAP::Lite should complain. Let me know if it's
        not what you're looking for.

        Best wishes, Paul.

        --- eat_lemon@... wrote:
        > Hi,
        >
        > I have a perl client and a Java server using Apach Soap. When I
        > pass
        > a number to the Java server and it is expecting a "long", but
        > soaplite packages it as an "int". The server didn't complain, but
        > I'm just worry that this might cause problems if the number is
        > bigger
        > than 32-bit. Will the int be properly cast to a long on the server
        >
        > side? Do I need to write an as_long to pass in long probably?
        >
        > Any help is greatly appreciated,
        >
        > Simon



        __________________________________________________
        Do You Yahoo!?
        Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
        http://geocities.yahoo.com/ps/info1
      • eat_lemon@yahoo.ca
        Hi Paul, ... server ... I tried using SOAP::Data- type(long = 123); SOAP::Lite complained saying no deserializer found. It only stops complaining after I
        Message 3 of 7 , Nov 23, 2001
          Hi Paul,

          --- In soaplite@y..., Paul Kulchenko <paulclinger@y...> wrote:
          > Hi, Simon!
          >
          > > than 32-bit. Will the int be properly cast to a long on the
          server
          > > side? Do I need to write an as_long to pass in long probably?
          > It depends on Java impelemtation. You may type it as long to be on a
          > safe side. It could be as simple as this:
          >
          > $long = SOAP::Data->type(long => 123);
          >
          > It can be done for many other types also. If you use wrong
          > (undeclared) types, SOAP::Lite should complain. Let me know if it's
          > not what you're looking for.

          I tried using SOAP::Data->type(long => 123);
          SOAP::Lite complained saying no deserializer found. It only stops
          complaining after I added a SOAP::Serializer::as_long method. I
          scanned through Lite.pm and I didn't find any as_long implemented
          either. Is it because I have an old version? I downloaded the
          newest version and looked through that Lite.pm and found no as_long
          in there as well though.

          Any help is greatly appreciated!

          Thanks,

          Simon
        • Paul Kulchenko
          Hi, Simon! ... Why would it? Could you show your code? That s code for serializer (not for deserializer). Here is the code that works for me: my $long =
          Message 4 of 7 , Nov 23, 2001
            Hi, Simon!

            --- eat_lemon@... wrote:
            > I tried using SOAP::Data->type(long => 123);
            > SOAP::Lite complained saying no deserializer found. It only stops
            Why would it? Could you show your code? That's code for serializer
            (not for deserializer). Here is the code that works for me:

            my $long = SOAP::Serializer
            ->serialize(SOAP::Data->name('mylong')->type(long => 123));

            print $long;
            print SOAP::Deserializer->deserialize($long)->root;

            and here is output it generates:

            <?xml version="1.0" encoding="UTF-8"?><mylong
            xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
            xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/1999/XMLSchema"
            xsi:type="xsd:long">123</mylong>

            123

            As you see, long type is there and it's deserialized. Though
            SOAP::Lite WILL complain (Unspecified namespace for type 'long') if
            you have xsi:type="long" rather than "xsd:long" (and there is no
            default namespace), because there is no namespace associated with
            long type. Could you show XML code that deserializer complains on?

            > complaining after I added a SOAP::Serializer::as_long method. I
            > scanned through Lite.pm and I didn't find any as_long implemented
            > either. Is it because I have an old version? I downloaded the
            > newest version and looked through that Lite.pm and found no as_long
            > in there as well though.
            It's there. there are classes like
            SOAP::XMLSchemaSOAP1_1::Deserializer, SOAP::XMLSchema1999::Serializer
            and others. They have list of all types defined in SOAP specification
            or XML Schemas. You can override those, or add your handler in
            SOAP::Serializer, but by default all classes from XML Schema (and
            long also) should be handled without problem.

            Best wishes, Paul.

            __________________________________________________
            Do You Yahoo!?
            Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
            http://geocities.yahoo.com/ps/info1
          • eat_lemon@yahoo.ca
            Hi Paul, I tried what you did and I was able to serialize long properly, but my problem was the serialization of a method parameter that is of type long . I
            Message 5 of 7 , Nov 26, 2001
              Hi Paul,

              I tried what you did and I was able to serialize long properly, but
              my problem was the serialization of a method parameter that is of
              type "long". I checked out the xml and found that it used the wrong
              namespace, but I don't know why. My code is as follows:

              my $lite = SOAP::Lite->uri('MyNameSpace')->proxy(...);
              my $param = SOAP::Data->type(long => 123);
              $lite->myMethod($param);

              Here is the xml:

              SOAPAction: "MyNameSpace#myMethod"

              <?xml version="1.0" encoding="UTF-8"?>
              <SOAP-ENV:Envelope xmlns:namesp2="MyNameSpace"
              xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
              SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
              xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
              xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
              xmlns:xsd="http://www.w3.org/1999/XMLSchema">
              <SOAP-ENV:Body>
              <namesp3:myMethod xmlns:namesp3="MyNameSpace">
              <c-gensym18 xsi:type="namesp2:long">123</c-gensym18>
              </namesp3:myMethod></SOAP-ENV:Body>

              As you can see, soaplite appends "namesp2" instead of "xsd" for long
              in a method call. Why did this happen? I know I can fix this by
              adding an as_long method, but is this the proper way to tackle this
              problem?

              Thanks a lot for your help!

              Simon

              --- In soaplite@y..., Paul Kulchenko <paulclinger@y...> wrote:
              > Hi, Simon!
              >
              > --- eat_lemon@y... wrote:
              > > I tried using SOAP::Data->type(long => 123);
              > > SOAP::Lite complained saying no deserializer found. It only
              stops
              > Why would it? Could you show your code? That's code for serializer
              > (not for deserializer). Here is the code that works for me:
              >
              > my $long = SOAP::Serializer
              > ->serialize(SOAP::Data->name('mylong')->type(long => 123));
              >
              > print $long;
              > print SOAP::Deserializer->deserialize($long)->root;
              >
              > and here is output it generates:
              >
              > <?xml version="1.0" encoding="UTF-8"?><mylong
              > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
              > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
              > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
              > xmlns:xsd="http://www.w3.org/1999/XMLSchema"
              > xsi:type="xsd:long">123</mylong>
              >
              > 123
              >
              > As you see, long type is there and it's deserialized. Though
              > SOAP::Lite WILL complain (Unspecified namespace for type 'long') if
              > you have xsi:type="long" rather than "xsd:long" (and there is no
              > default namespace), because there is no namespace associated with
              > long type. Could you show XML code that deserializer complains on?
              >
              > > complaining after I added a SOAP::Serializer::as_long method. I
              > > scanned through Lite.pm and I didn't find any as_long implemented
              > > either. Is it because I have an old version? I downloaded the
              > > newest version and looked through that Lite.pm and found no
              as_long
              > > in there as well though.
              > It's there. there are classes like
              > SOAP::XMLSchemaSOAP1_1::Deserializer,
              SOAP::XMLSchema1999::Serializer
              > and others. They have list of all types defined in SOAP
              specification
              > or XML Schemas. You can override those, or add your handler in
              > SOAP::Serializer, but by default all classes from XML Schema (and
              > long also) should be handled without problem.
              >
              > Best wishes, Paul.
              >
              > __________________________________________________
              > Do You Yahoo!?
              > Yahoo! GeoCities - quick and easy web site hosting, just
              $8.95/month.
              > http://geocities.yahoo.com/ps/info1
            • Paul Kulchenko
              Hi, Simon! Here is what your code generates for me (SOAP::Lite v0.52): SOAPAction: MyNameSpace#myMethod
              Message 6 of 7 , Nov 26, 2001
                Hi, Simon!

                Here is what your code generates for me (SOAP::Lite v0.52):

                SOAPAction: "MyNameSpace#myMethod"

                <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope
                xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
                xmlns:xsd="http://www.w3.org/1999/XMLSchema"><SOAP-ENV:Body><namesp1:myMethod
                xmlns:namesp1="MyNameSpace"><c-gensym3
                xsi:type="xsd:long">123</c-gensym3></namesp1:myMethod></SOAP-ENV:Body></SOAP-ENV:Envelope>

                For some previous versions you may need to specify 'xsd:long' instead
                of 'long' type, because not all types described in XML Schema were
                recognized. I believe I've added them all in v0.51. If you're using
                older version you may need to specify full type as 'xsd:long' or
                consider upgrade. Let me know if you still have a problem.

                Best wishes, Paul.

                --- eat_lemon@... wrote:
                > Hi Paul,
                >
                > I tried what you did and I was able to serialize long properly, but
                >
                > my problem was the serialization of a method parameter that is of
                > type "long". I checked out the xml and found that it used the
                > wrong
                > namespace, but I don't know why. My code is as follows:
                >
                > my $lite = SOAP::Lite->uri('MyNameSpace')->proxy(...);
                > my $param = SOAP::Data->type(long => 123);
                > $lite->myMethod($param);
                >
                > Here is the xml:
                >
                > SOAPAction: "MyNameSpace#myMethod"
                >
                > <?xml version="1.0" encoding="UTF-8"?>
                > <SOAP-ENV:Envelope xmlns:namesp2="MyNameSpace"
                > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
                > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                > xmlns:xsd="http://www.w3.org/1999/XMLSchema">
                > <SOAP-ENV:Body>
                > <namesp3:myMethod xmlns:namesp3="MyNameSpace">
                > <c-gensym18 xsi:type="namesp2:long">123</c-gensym18>
                > </namesp3:myMethod></SOAP-ENV:Body>
                >
                > As you can see, soaplite appends "namesp2" instead of "xsd" for
                > long
                > in a method call. Why did this happen? I know I can fix this by
                > adding an as_long method, but is this the proper way to tackle this
                >
                > problem?
                >
                > Thanks a lot for your help!
                >
                > Simon
                >
                > --- In soaplite@y..., Paul Kulchenko <paulclinger@y...> wrote:
                > > Hi, Simon!
                > >
                > > --- eat_lemon@y... wrote:
                > > > I tried using SOAP::Data->type(long => 123);
                > > > SOAP::Lite complained saying no deserializer found. It only
                > stops
                > > Why would it? Could you show your code? That's code for
                > serializer
                > > (not for deserializer). Here is the code that works for me:
                > >
                > > my $long = SOAP::Serializer
                > > ->serialize(SOAP::Data->name('mylong')->type(long => 123));
                > >
                > > print $long;
                > > print SOAP::Deserializer->deserialize($long)->root;
                > >
                > > and here is output it generates:
                > >
                > > <?xml version="1.0" encoding="UTF-8"?><mylong
                > > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                > > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
                > > xmlns:xsd="http://www.w3.org/1999/XMLSchema"
                > > xsi:type="xsd:long">123</mylong>
                > >
                > > 123
                > >
                > > As you see, long type is there and it's deserialized. Though
                > > SOAP::Lite WILL complain (Unspecified namespace for type 'long')
                > if
                > > you have xsi:type="long" rather than "xsd:long" (and there is no
                > > default namespace), because there is no namespace associated with
                > > long type. Could you show XML code that deserializer complains
                > on?
                > >
                > > > complaining after I added a SOAP::Serializer::as_long method.
                > I
                > > > scanned through Lite.pm and I didn't find any as_long
                > implemented
                > > > either. Is it because I have an old version? I downloaded the
                >
                > > > newest version and looked through that Lite.pm and found no
                > as_long
                > > > in there as well though.
                > > It's there. there are classes like
                > > SOAP::XMLSchemaSOAP1_1::Deserializer,
                > SOAP::XMLSchema1999::Serializer
                > > and others. They have list of all types defined in SOAP
                > specification
                > > or XML Schemas. You can override those, or add your handler in
                > > SOAP::Serializer, but by default all classes from XML Schema (and
                > > long also) should be handled without problem.
                > >
                > > Best wishes, Paul.
                > >
                > > __________________________________________________
                > > Do You Yahoo!?
                > > Yahoo! GeoCities - quick and easy web site hosting, just
                > $8.95/month.
                > > http://geocities.yahoo.com/ps/info1
                >
                >
                > ------------------------ Yahoo! Groups Sponsor
                >
                > To unsubscribe from this group, send an email to:
                > soaplite-unsubscribe@yahoogroups.com
                >
                >
                >
                > Your use of Yahoo! Groups is subject to
                > http://docs.yahoo.com/info/terms/
                >
                >


                __________________________________________________
                Do You Yahoo!?
                Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
                http://geocities.yahoo.com/ps/info1
              • eat_lemon@yahoo.ca
                Hi Paul, You are right! It s because I m using 0.50. I upgraded it to 0.51 and it worked. Thank you so much for your time! Best wishes, Simon ...
                Message 7 of 7 , Nov 26, 2001
                  Hi Paul,

                  You are right! It's because I'm using 0.50. I upgraded it to 0.51
                  and it worked. Thank you so much for your time!

                  Best wishes,

                  Simon

                  --- In soaplite@y..., Paul Kulchenko <paulclinger@y...> wrote:
                  > Hi, Simon!
                  >
                  > Here is what your code generates for me (SOAP::Lite v0.52):
                  >
                  > SOAPAction: "MyNameSpace#myMethod"
                  >
                  > <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope
                  > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                  > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                  > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                  > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
                  > xmlns:xsd="http://www.w3.org/1999/XMLSchema"><SOAP-
                  ENV:Body><namesp1:myMethod
                  > xmlns:namesp1="MyNameSpace"><c-gensym3
                  > xsi:type="xsd:long">123</c-gensym3></namesp1:myMethod></SOAP-
                  ENV:Body></SOAP-ENV:Envelope>
                  >
                  > For some previous versions you may need to specify 'xsd:long'
                  instead
                  > of 'long' type, because not all types described in XML Schema were
                  > recognized. I believe I've added them all in v0.51. If you're using
                  > older version you may need to specify full type as 'xsd:long' or
                  > consider upgrade. Let me know if you still have a problem.
                  >
                  > Best wishes, Paul.
                  >
                  > --- eat_lemon@y... wrote:
                  > > Hi Paul,
                  > >
                  > > I tried what you did and I was able to serialize long properly,
                  but
                  > >
                  > > my problem was the serialization of a method parameter that is of
                  > > type "long". I checked out the xml and found that it used the
                  > > wrong
                  > > namespace, but I don't know why. My code is as follows:
                  > >
                  > > my $lite = SOAP::Lite->uri('MyNameSpace')->proxy(...);
                  > > my $param = SOAP::Data->type(long => 123);
                  > > $lite->myMethod($param);
                  > >
                  > > Here is the xml:
                  > >
                  > > SOAPAction: "MyNameSpace#myMethod"
                  > >
                  > > <?xml version="1.0" encoding="UTF-8"?>
                  > > <SOAP-ENV:Envelope xmlns:namesp2="MyNameSpace"
                  > > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                  > > SOAP-
                  ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                  > > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
                  > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                  > > xmlns:xsd="http://www.w3.org/1999/XMLSchema">
                  > > <SOAP-ENV:Body>
                  > > <namesp3:myMethod xmlns:namesp3="MyNameSpace">
                  > > <c-gensym18 xsi:type="namesp2:long">123</c-gensym18>
                  > > </namesp3:myMethod></SOAP-ENV:Body>
                  > >
                  > > As you can see, soaplite appends "namesp2" instead of "xsd" for
                  > > long
                  > > in a method call. Why did this happen? I know I can fix this by
                  > > adding an as_long method, but is this the proper way to tackle
                  this
                  > >
                  > > problem?
                  > >
                  > > Thanks a lot for your help!
                  > >
                  > > Simon
                  > >
                  > > --- In soaplite@y..., Paul Kulchenko <paulclinger@y...> wrote:
                  > > > Hi, Simon!
                  > > >
                  > > > --- eat_lemon@y... wrote:
                  > > > > I tried using SOAP::Data->type(long => 123);
                  > > > > SOAP::Lite complained saying no deserializer found. It only
                  > > stops
                  > > > Why would it? Could you show your code? That's code for
                  > > serializer
                  > > > (not for deserializer). Here is the code that works for me:
                  > > >
                  > > > my $long = SOAP::Serializer
                  > > > ->serialize(SOAP::Data->name('mylong')->type(long => 123));
                  > > >
                  > > > print $long;
                  > > > print SOAP::Deserializer->deserialize($long)->root;
                  > > >
                  > > > and here is output it generates:
                  > > >
                  > > > <?xml version="1.0" encoding="UTF-8"?><mylong
                  > > > xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
                  > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                  > > > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
                  > > > xmlns:xsd="http://www.w3.org/1999/XMLSchema"
                  > > > xsi:type="xsd:long">123</mylong>
                  > > >
                  > > > 123
                  > > >
                  > > > As you see, long type is there and it's deserialized. Though
                  > > > SOAP::Lite WILL complain (Unspecified namespace for type 'long')
                  > > if
                  > > > you have xsi:type="long" rather than "xsd:long" (and there is no
                  > > > default namespace), because there is no namespace associated
                  with
                  > > > long type. Could you show XML code that deserializer complains
                  > > on?
                  > > >
                  > > > > complaining after I added a SOAP::Serializer::as_long method.
                  > > I
                  > > > > scanned through Lite.pm and I didn't find any as_long
                  > > implemented
                  > > > > either. Is it because I have an old version? I downloaded
                  the
                  > >
                  > > > > newest version and looked through that Lite.pm and found no
                  > > as_long
                  > > > > in there as well though.
                  > > > It's there. there are classes like
                  > > > SOAP::XMLSchemaSOAP1_1::Deserializer,
                  > > SOAP::XMLSchema1999::Serializer
                  > > > and others. They have list of all types defined in SOAP
                  > > specification
                  > > > or XML Schemas. You can override those, or add your handler in
                  > > > SOAP::Serializer, but by default all classes from XML Schema
                  (and
                  > > > long also) should be handled without problem.
                  > > >
                  > > > Best wishes, Paul.
                  > > >
                  > > > __________________________________________________
                  > > > Do You Yahoo!?
                  > > > Yahoo! GeoCities - quick and easy web site hosting, just
                  > > $8.95/month.
                  > > > http://geocities.yahoo.com/ps/info1
                  > >
                  > >
                  > > ------------------------ Yahoo! Groups Sponsor
                  > >
                  > > To unsubscribe from this group, send an email to:
                  > > soaplite-unsubscribe@y...
                  > >
                  > >
                  > >
                  > > Your use of Yahoo! Groups is subject to
                  > > http://docs.yahoo.com/info/terms/
                  > >
                  > >
                  >
                  >
                  > __________________________________________________
                  > Do You Yahoo!?
                  > Yahoo! GeoCities - quick and easy web site hosting, just
                  $8.95/month.
                  > http://geocities.yahoo.com/ps/info1
                Your message has been successfully submitted and would be delivered to recipients shortly.