Ask the message context for it:

MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
-Dug


"Tuan Le Viet" <[EMAIL PROTECTED]> on 10/01/2002 08:47:24 AM

Please respond to [EMAIL PROTECTED]

To:    <[EMAIL PROTECTED]>
cc:
Subject:    RE: Dynamic publishing



Hi Dug,

Supposed that I have account.wsdl.
To create web service, I'll do like this:
+Run wsdl2java on account.wsdl, I'll get:
    Account.java
    AccountService.java
    AccountServiceLocator.java
    AccountSoapBindingImpl.java
    AccountSoapBindingSkeleton.java
    AccountSoapBindingStub.java
+I will have to write the body for AccountSoapBindingImpl.java. This is the
main class for Account service.
Class hierarchy: interface Account extends interface java.rmi.Remote
                         class AccountSoapBindingImpl implements interface
Account
So from inside AccountSoapBindingImpl, how do I get ServletRequest object?

Cheers,

Tuan

      -----Original Message-----
      From: Doug Davis [mailto:[EMAIL PROTECTED]]
      Sent: 2002/10/01 (火) 19:12
      To: [EMAIL PROTECTED]
      Cc:
      Subject: RE: Dynamic publishing








      By default, if you use the URLMapper, yes axis will want the base URL
to
      be:
        http://host:port/axis/service/account
      but you can add on any parameters you want (as long as Axis isn't
using it
      - like
      ?wsdl).  So adding on "?account=12345" will be ok because it will be
      ignored by
      Axis.  Then, in your service you can just get the full URL (or get
the
      Servlet Request
      object) and get the parameters (account) you want/need.
      -Dug


      "Tuan Le Viet" <[EMAIL PROTECTED]> on 10/01/2002 08:04:57 AM

      Please respond to [EMAIL PROTECTED]

      To:    <[EMAIL PROTECTED]>
      cc:
      Subject:    RE: Dynamic publishing



      Hi Dug,

      You got me here :-)
      Just one practical question, is that possible to have the URL looks
like
      http://host:port/axis/services/account?number=12345 <
      http://host:port/axis/services/account?number=12345>  for my service.
I
      thought Axis mandates Webservice URL to be
      http://host:port/axis/services/MyService. If it's possible how do i
get the
      parameter.

      Thanx.

      Tuan

            -----Original Message-----
            From: Doug Davis [mailto:[EMAIL PROTECTED]]
            Sent: 2002/10/01 (火) 18:46
            To: [EMAIL PROTECTED]
            Cc:
            Subject: RE: Dynamic publishing








            You can do that - just make the account number part of the
parameters
      of
            the URL instead of the address part of the URL.
            By that I mean, *don't* tell them the url is:
              http://host:port/axis/services/account12345
            tell them to use:
              http://host:port/axis/services/account?number=12345
            then you only need one instance of the service.
            The client won't (or shouldn't) care what the total URL looks
like,
      its
            just a string so there's no extra work on their part.  All of
the
      extra
            work is on _your_ side - which isn't much - its just grabbing
the
      "number"
            parameter.
            -Dug


            "Tuan Le Viet" <[EMAIL PROTECTED]> on 10/01/2002 07:42:22
AM

            Please respond to [EMAIL PROTECTED]

            To:    <[EMAIL PROTECTED]>
            cc:
            Subject:    RE: Dynamic publishing



            Hi Dug,

            I totally agree with you that Axis should just worry about SOAP
      processing,
            back-end system should deal with other issues.
            My idea is that BankAccount user wouldn't have to pass account
ID
            everytime, it would be nicer if account ID will be supplied
only once
      to
            get the reference to Account object (in this case reference is
just a
      URL),
            then during the entire session, user wouldn't have to pass
along
      account ID
            whenever deposit/withdraw/checkBalance is invoked. Account
object is
      just a
            proxy to back-end system though, so it should be light-weight.

            I reckon this approach is a bit more OO, and doesn't SOAP stand
for
      Simple
            OBJECT Access Protocol?

            Cheers,

            Tuan Le

                  -----Original Message-----
                  From: Doug Davis [mailto:[EMAIL PROTECTED]]
                  Sent: 2002/10/01 (火) 18:06
                  To: [EMAIL PROTECTED]
                  Cc:
                  Subject: RE: Dynamic publishing








                  Just my opinion of course, but a couple of things
immediately
      come to
                  mind...lets say you have thousands and thousands of bank
      accounts
            you're
                  looking at having Axis manage a ton of services - which
as of
      now I
            doubt
                  it would be really good at.  At a minimum you'd need to
create
      a new
                  configuration plug-in that should store its list in
something
      like a
            DB -
                  something that wouldn't require the entire list to be in
memory
      (like
            I
                  believe the current one does).  And on the topic of
memory -
      you
            would be
                  looking at have Axis create a new instance of each bank
account
            object -
                  depending on how well the garbage collection is that
could be a
            memory hog
                  as well.  I think it would be a much cleaner approach to
just
      have
            one bank
                  account object, and as long as it is thread safe, you can
reuse
      it a
                  million times w/o any memory problems.  Then just have it
look
      at
            some
                  other piece of data (like soap header, rpc param, or
            url(?account=xxxx)) to
                  get the actual account number.  Let your real back-end
system
      that's
                  managing the accounts deal with all of the performance
problems
      of
                  thousands of records - let Axis worry about what its
supposed
      to:
            SOAP
                  processing.  Think of it this way - let's say you were
going to
            provide a
                  web/html interface for your customers, would you consider
a new
            servlet for
                  each account? Modifying web.xml everytime a new customer
were
            created? I
                  doubt (or hope) not.  So, why treat web services any
      differently?
                  -Dug



                  "Tuan Le Viet" <[EMAIL PROTECTED]> on 09/30/2002
11:48:39
      PM

                  Please respond to [EMAIL PROTECTED]

                  To:    <[EMAIL PROTECTED]>
                  cc:
                  Subject:    RE: Dynamic publishing



                  Dug,

                  My idea was to have a more OO approach. I'll have a
manager
      which
            manages
                  lifetime of Account service. Each service will be
published
      when
            necessary
                  and unpublished when it's no longer needed.
                  This would not be a nightmore for scalability right?

                  Cheers,

                  Tuan

                        -----Original Message-----
                        From: Doug Davis [mailto:[EMAIL PROTECTED]]
                        Sent: 2002/10/01 (火) 8:16
                        To: [EMAIL PROTECTED]
                        Cc:
                        Subject: RE: Dynamic publishing








                        Sorry - missed that, but why would you really want
to
      deploy
            one
                  service
                        per account?  That's going to be a scalability
nightmare.
      Why
            not
                  just
                        have the account number in a soap header, as a
param on
      an rpc
            call
                  or even
                        in the URL (ie.

      http://localhost:8080/axis/services/BankServices?account=12345
            - to
                  the
                        client the URL is just a string so adding on
      ?account=12345
            should be
                  no
                        big deal).
                        -Dug


                        "Tuan Le Viet" <[EMAIL PROTECTED]> on
09/30/2002
      08:17:30
            PM

                        Please respond to [EMAIL PROTECTED]

                        To:    <[EMAIL PROTECTED]>
                        cc:
                        Subject:    RE: Dynamic publishing



                        As I understand, jws is just a java source file.
Axis
      will
            publish
                  this
                        java class as web service automatically.

                        However, this wouldn't solve my problem as my
intention
      is to
            create
                  a web
                        service for each instance of the same class.

                        Cheers,

                        Tuan

                              -----Original Message-----
                              From: Doug Davis [mailto:[EMAIL PROTECTED]]
                              Sent: 2002/10/01 (火) 7:06
                              To: [EMAIL PROTECTED]
                              Cc:
                              Subject: RE: Dynamic publishing








                              What about deploying (dropping) a jws file -
Aixs
            processes
                  that
                              dynamically.
                              -Dug


                              "Tuan Le Viet" <[EMAIL PROTECTED]> on
      09/30/2002
            07:59:17
                  PM

                              Please respond to [EMAIL PROTECTED]

                              To:    <[EMAIL PROTECTED]>
                              cc:
                              Subject:    RE: Dynamic publishing



                              Grant,

                              It's obviously your solution is a feasible
      work-around.
                  However, as
                        you
                              stated, it's really a big mess.

                              Now I consider switching to GLUE which
supports
      dynamic
                  publishing
                        from the
                              beginning. If you're interested, take a look
at
                              http://www.themindelectric.com

                              However, I really do hope that there is a
clean
      solution
            using
                  Axis.
                              Probably in near future.

                              Cheers,

                              Tuan

                                    -----Original Message-----
                                    From: Grant Echols (JanusLogix)
                  [mailto:[EMAIL PROTECTED]]
                                    Sent: 2002/09/30 (月) 22:09
                                    To: [EMAIL PROTECTED]
                                    Cc:
                                    Subject: Re: Dynamic publishing



                                    Tuan,

                                    I have a similar need but for a totally
      different
            reason.
                  We
                        have a
                              services
                                    framework and want to dynamically
publish
      public
            'service
                  entry
                              points' at
                                    runtime through Axis SOAP. We only have
a
      Java
            class file
                  and
                        an
                              associated
                                    interface as parameters so we have to
make up
      the
            rest of
                  the
                              difference.
                                    Right now we're spawning Java2WSDL and
      WSDL2Java
            back to
                  back
                        so I
                              can get a
                                    .WSDD file and then call the
AdminClient to
      deploy
            the
                        deploy.wsdd
                              file. Its
                                    a mess and I wish there was a better
way to
      do
            this. At
                  this
                        point we
                              were
                                    too unsure of the deploy.wsdd file
format to
            generate it
                        ourselves.
                              Perhaps
                                    even having this documented, or having
a
      class that
            we
                  could
                              instantiate and
                                    call instead of actually spawning the
wsdl...
            utilities
                  would
                        be
                              better. But
                                    for now, its working...:-(

                                    I'm hoping someone has a better way and
will
            respond, but
                  if
                        you're
                              still
                                    stuck you could possibly consider this
route
      as an
                  interim
                        solution.

                                    Grant

                                    ----- Original Message -----
                                    From: "Tuan Le Viet"
      <[EMAIL PROTECTED]>
                                    To: <[EMAIL PROTECTED]>
                                    Sent: Thursday, September 26, 2002
11:13 PM
                                    Subject: Dynamic publishing


                                    > Hi there,
                                    >
                                    > Does Axis support "dynamic
publishing"?
                                    >
                                    > My intention:
                                    >
                                    > +I have a class called BankAccount
with 3
            methods:
                                    >
                                    >            +void deposit(int amount)
                                    >
                                    >            +void withdraw(int amount)
                                    >
                                    >            +int checkBalance()
                                    >
                                    > +I have a class Bank, which have 1
method:
      String
                        getAccount(String
                                    accountNo).
                                    >
                                    > +I statically publish it as Web
service,
      users
            will
                  call
                        getAccount
                              method
                                    to get the URL to BankAccount web
service,
      for
            example:
                  if user
                              called
                                    getAccount("12345"), URL returned is:

http://somehost/axis/services/account12345
                                    >
                                    > +users then interact with this
BankAccount
            webservice
                  to
                        deposit,
                                    withdraw, checkBalance.
                                    >
                                    > +In order to achieve this, it's
required to
            dynamically
                        publish
                              each
                                    BankAccount instance as a web service.
                                    >
                                    > Is this possible with Axis?
                                    >
                                    > I would really appreciate any
pointers.
                                    >
                                    > Cheers,
                                    >
                                    > Tuan
                                    >
                                    >
                                    >
                                    >
                                    >
                                    >

Reply via email to