Amila,

If you use your own TransportListener implementations, how do you
implement getEPRsForService such that it returns URIs with the correct
port numbers?

Andreas

On Mon, Aug 24, 2009 at 08:56, Amila
Suriarachchi<amilasuriarach...@gmail.com> wrote:
> hi,
>
> I had time to go through your comment and I think what you suggest is the
> correct way to address the problem.
> So +1 for that.
>
> Then I looked into the our code and found that we have also done the same
> technique with separate two
> Transport listeners :).
>
> Because we have our own two transport listeners this code gives us problems,
>
> // This method should not be part of the public API. In particular we must
> not allow subclasses
>     // to override this method because we don't make any guarantees as to
> when exactly this method
>     // is called.
>     private void preprocessRequest(HttpServletRequest req) throws
> ServletException {
>         initContextRoot(req);
>
>         AxisServletListener listener = req.isSecure() ? httpsListener :
> httpListener;
>         if (listener == null) {
>             throw new ServletException(req.getScheme() + " is forbidden");
>         } else {
>             // Autodetect the port number if necessary
>             if (listener.getPort() == -1) {
>                 listener.setPort(req.getServerPort());
>             }
>         }
>     }
>
> Here you assume anyone use Axis2 as a library has used AxisServletListner
> and kept it as a private variable in Axis2Servlet.
>
> Instead of I would like to implement this method like this,
>
>
> // This method should not be part of the public API. In particular we must
> not allow subclasses
>     // to override this method because we don't make any guarantees as to
> when exactly this method
>     // is called.
>     private void preprocessRequest(HttpServletRequest req) throws
> ServletException {
>         initContextRoot(req);
>
>         TransportInDescription transportInDescription =
>                 req.isSecure() ?
> this.axisConfiguration.getTransportIn(Constants.TRANSPORT_HTTPS) :
>
> this.axisConfiguration.getTransportIn(Constants.TRANSPORT_HTTP);
>         if (transportInDescription == null) {
>             throw new ServletException(req.getScheme() + " is forbidden");
>         } else {
>             if (transportInDescription.getReceiver() instanceof
> AxisServletListener) {
>                 AxisServletListener listener = (AxisServletListener)
> transportInDescription.getReceiver();
>                 if (listener.getPort() == -1) {
>                     listener.setPort(req.getServerPort());
>                 }
>             }
>         }
>     }
>
> In this way we do not keep the Axis2Specific listener and take it from the
> axis configuration and check for port only if it is an Axis2Servlet
> listener.
>
> WDYT?
>
> thanks,
> Amila.
>
>
>
> On Sat, Aug 22, 2009 at 12:45 PM, Srinath Perera <hemap...@gmail.com> wrote:
>>
>> > I am not sure whether clearly understand the difference between how
>> > AxisServelet works and how SimpleHTTPServer works. In the case of
>> > AxisServlet, we first start AxisServlet and then we start Axis2, so when
>> > we start Axis2 we already have HTTP listener running (and hence
>> > TransportInDec). So once the system start we just create a
>> > TransportInDec using servlet and set that as the HTTP TransportDec (and
>> > of course we replace what is in axis2.xml for HTTP with this
>> > transportInDec, and we must do that). Whereas in SimpleHTTPServer, we
>> > first start Axis2 and then we use transport in axis2.xml to configure
>> > the system, so we use the tarnporInDec to configure the
>> > SimpleHTTPServer.
>>
>> Yep, this is right. One reason it is there is that to allow both
>> simple HTTP server and servlet share the same axis2.xml which is not
>> required, rather a convenience. In a servlet case transport receiver
>> is not initialized at all (I do not think it has changed).
>>
>> Thanks
>> Srinath
>>
>> --
>> ============================
>> Srinath Perera, Ph.D.
>>   WSO2 Inc. http://wso2.com
>>   Blog: http://srinathsview.blogspot.com/
>
>
>
> --
> Amila Suriarachchi
> WSO2 Inc.
> blog: http://amilachinthaka.blogspot.com/
>

Reply via email to