You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Oliver Wulff <ow...@talend.com> on 2011/06/18 08:42:58 UTC
Fully qualified endpoint address at startup time
Hi there
Does there exist a way to figure out the fully qualified endpoint address for an http based endpoint at startup time independent of the underlying container (servlet, osgi, jetty)?
The following way works for an incoming request but I'm looking for a way during startup:
HttpServletRequest req = (HttpServletRequest)msg.get("HTTP.REQUEST")
if (req != null) {
... = req.getRequestUrl();
}
Thanks
Oli
Re: AW: Fully qualified endpoint address at startup time
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Oli
On Wed, Jun 22, 2011 at 8:18 AM, Oliver Wulff <ow...@talend.com> wrote:
> Thanks for clarification. Is this different when deploying to OSGi/Karaf? I think you can use either Jetty or the OSGi http service. Are we able to get this information at startup in this case?
>
I guess it can be more predictable when bundles are not deployed as
web-bundles, that is, when HTTP Service is used to assign a default
context such as /services as configured at startup, so knowing this
context, preconfigured port number and the endpoint address can give
an absolute URI; however what Dan said would apply again when
web-bundle containing web.xml are deployed.
Probably only in case of CXFJAXRsNonSpringServlet, with root resources
having constructors accepting ServletContext, one can get servlet
specific info at the init time; similarly with CXFNonSpringServlet
overriding init(), etc...
Cheers, Sergey
> Thanks
> Oli
>
> ________________________________________
> Von: Daniel Kulp [dkulp@apache.org]
> Gesendet: Mittwoch, 22. Juni 2011 05:18
> An: users@cxf.apache.org
> Cc: Oliver Wulff
> Betreff: Re: AW: Fully qualified endpoint address at startup time
>
> Oliver,
>
> On Tuesday, June 21, 2011 7:51:43 PM Oliver Wulff wrote:
>> I was thinking that it must be possible to figure this out at startup time.
>> I remember that I read that there was some refactoring regarding the
>> different http transports which would simplify the way to get this
>> information.
>
> No, Willem is right. There isn't anything in the Servlet context or config
> that would allow you to get that information. It's partially because a
> single servlet can be bound to multiple locations and different ports and
> such. Thus, it's only during the invoke that you can determine how the
> client contacted the servlet.
>
>
> Dan
>
>
>
>> I think it's error prone to configure it in the spring config if everything
>> is already configured in tomcat server.xml and the web app name (servlet
>> context name).
>>
>> Thanks
>> Oli
>>
>> ________________________________________
>> Von: Willem Jiang [willem.jiang@gmail.com]
>> Gesendet: Montag, 20. Juni 2011 12:03
>> An: users@cxf.apache.org
>> Betreff: Re: Fully qualified endpoint address at startup time
>>
>> It's hard to know what the exactly the services address is when you
>> start the the endpoint in the servlet or osgi container.
>> The address will be changed if your war or servlet configure is changed.
>>
>> If you already know the physical address, you may consider to use
>> publishedEndpointUrl property to set the address which will be used in
>> the WSDL that is generate dynamically from CXF.
>>
>> <jaxws:endpoint id="myEndpoint" address="MyServicePort"
>> serviceClass="org.apache.hello_world_soap_http.GreeterImpl" >
>> <jaxws:properties>
>> <!-- Set the publishedEndpointUrl which could override the service
>> address from generated WSDL as you want -->
>> <entry key="publishedEndpointUrl"
>> value="http://www.simple.com/services/test" />
>> </jaxws:properties>
>> </jaxws:cxfEndpoint>
>>
>> On 6/18/11 2:42 PM, Oliver Wulff wrote:
>> > Hi there
>> >
>> > Does there exist a way to figure out the fully qualified endpoint
>> > address for an http based endpoint at startup time independent of the
>> > underlying container (servlet, osgi, jetty)?
>> >
>> > The following way works for an incoming request but I'm looking for a
>> > way during startup:
>> >
>> > HttpServletRequest req = (HttpServletRequest)msg.get("HTTP.REQUEST")
>> > if (req != null) {
>> > ... = req.getRequestUrl();
>> > }
>> >
>> >
>> > Thanks
>> > Oli
>>
>> --
>> Willem
>> ----------------------------------
>> FuseSource
>> Web: http://www.fusesource.com
>> Blog: http://willemjiang.blogspot.com (English)
>> http://jnn.javaeye.com (Chinese)
>> Twitter: willemjiang
>> Weibo: willemjiang
> --
> Daniel Kulp
> dkulp@apache.org
> http://dankulp.com/blog
> Talend - http://www.talend.com
--
Sergey Beryozkin
Application Integration Division of Talend
http://sberyozkin.blogspot.com
AW: AW: Fully qualified endpoint address at startup time
Posted by Oliver Wulff <ow...@talend.com>.
Thanks for clarification. Is this different when deploying to OSGi/Karaf? I think you can use either Jetty or the OSGi http service. Are we able to get this information at startup in this case?
Thanks
Oli
________________________________________
Von: Daniel Kulp [dkulp@apache.org]
Gesendet: Mittwoch, 22. Juni 2011 05:18
An: users@cxf.apache.org
Cc: Oliver Wulff
Betreff: Re: AW: Fully qualified endpoint address at startup time
Oliver,
On Tuesday, June 21, 2011 7:51:43 PM Oliver Wulff wrote:
> I was thinking that it must be possible to figure this out at startup time.
> I remember that I read that there was some refactoring regarding the
> different http transports which would simplify the way to get this
> information.
No, Willem is right. There isn't anything in the Servlet context or config
that would allow you to get that information. It's partially because a
single servlet can be bound to multiple locations and different ports and
such. Thus, it's only during the invoke that you can determine how the
client contacted the servlet.
Dan
> I think it's error prone to configure it in the spring config if everything
> is already configured in tomcat server.xml and the web app name (servlet
> context name).
>
> Thanks
> Oli
>
> ________________________________________
> Von: Willem Jiang [willem.jiang@gmail.com]
> Gesendet: Montag, 20. Juni 2011 12:03
> An: users@cxf.apache.org
> Betreff: Re: Fully qualified endpoint address at startup time
>
> It's hard to know what the exactly the services address is when you
> start the the endpoint in the servlet or osgi container.
> The address will be changed if your war or servlet configure is changed.
>
> If you already know the physical address, you may consider to use
> publishedEndpointUrl property to set the address which will be used in
> the WSDL that is generate dynamically from CXF.
>
> <jaxws:endpoint id="myEndpoint" address="MyServicePort"
> serviceClass="org.apache.hello_world_soap_http.GreeterImpl" >
> <jaxws:properties>
> <!-- Set the publishedEndpointUrl which could override the service
> address from generated WSDL as you want -->
> <entry key="publishedEndpointUrl"
> value="http://www.simple.com/services/test" />
> </jaxws:properties>
> </jaxws:cxfEndpoint>
>
> On 6/18/11 2:42 PM, Oliver Wulff wrote:
> > Hi there
> >
> > Does there exist a way to figure out the fully qualified endpoint
> > address for an http based endpoint at startup time independent of the
> > underlying container (servlet, osgi, jetty)?
> >
> > The following way works for an incoming request but I'm looking for a
> > way during startup:
> >
> > HttpServletRequest req = (HttpServletRequest)msg.get("HTTP.REQUEST")
> > if (req != null) {
> > ... = req.getRequestUrl();
> > }
> >
> >
> > Thanks
> > Oli
>
> --
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog: http://willemjiang.blogspot.com (English)
> http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
--
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com
Re: AW: Fully qualified endpoint address at startup time
Posted by Daniel Kulp <dk...@apache.org>.
Oliver,
On Tuesday, June 21, 2011 7:51:43 PM Oliver Wulff wrote:
> I was thinking that it must be possible to figure this out at startup time.
> I remember that I read that there was some refactoring regarding the
> different http transports which would simplify the way to get this
> information.
No, Willem is right. There isn't anything in the Servlet context or config
that would allow you to get that information. It's partially because a
single servlet can be bound to multiple locations and different ports and
such. Thus, it's only during the invoke that you can determine how the
client contacted the servlet.
Dan
> I think it's error prone to configure it in the spring config if everything
> is already configured in tomcat server.xml and the web app name (servlet
> context name).
>
> Thanks
> Oli
>
> ________________________________________
> Von: Willem Jiang [willem.jiang@gmail.com]
> Gesendet: Montag, 20. Juni 2011 12:03
> An: users@cxf.apache.org
> Betreff: Re: Fully qualified endpoint address at startup time
>
> It's hard to know what the exactly the services address is when you
> start the the endpoint in the servlet or osgi container.
> The address will be changed if your war or servlet configure is changed.
>
> If you already know the physical address, you may consider to use
> publishedEndpointUrl property to set the address which will be used in
> the WSDL that is generate dynamically from CXF.
>
> <jaxws:endpoint id="myEndpoint" address="MyServicePort"
> serviceClass="org.apache.hello_world_soap_http.GreeterImpl" >
> <jaxws:properties>
> <!-- Set the publishedEndpointUrl which could override the service
> address from generated WSDL as you want -->
> <entry key="publishedEndpointUrl"
> value="http://www.simple.com/services/test" />
> </jaxws:properties>
> </jaxws:cxfEndpoint>
>
> On 6/18/11 2:42 PM, Oliver Wulff wrote:
> > Hi there
> >
> > Does there exist a way to figure out the fully qualified endpoint
> > address for an http based endpoint at startup time independent of the
> > underlying container (servlet, osgi, jetty)?
> >
> > The following way works for an incoming request but I'm looking for a
> > way during startup:
> >
> > HttpServletRequest req = (HttpServletRequest)msg.get("HTTP.REQUEST")
> > if (req != null) {
> > ... = req.getRequestUrl();
> > }
> >
> >
> > Thanks
> > Oli
>
> --
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog: http://willemjiang.blogspot.com (English)
> http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
--
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com
AW: Fully qualified endpoint address at startup time
Posted by Oliver Wulff <ow...@talend.com>.
Hi Willem
I was thinking that it must be possible to figure this out at startup time. I remember that I read that there was some refactoring regarding the different http transports which would simplify the way to get this information.
I think it's error prone to configure it in the spring config if everything is already configured in tomcat server.xml and the web app name (servlet context name).
Thanks
Oli
________________________________________
Von: Willem Jiang [willem.jiang@gmail.com]
Gesendet: Montag, 20. Juni 2011 12:03
An: users@cxf.apache.org
Betreff: Re: Fully qualified endpoint address at startup time
It's hard to know what the exactly the services address is when you
start the the endpoint in the servlet or osgi container.
The address will be changed if your war or servlet configure is changed.
If you already know the physical address, you may consider to use
publishedEndpointUrl property to set the address which will be used in
the WSDL that is generate dynamically from CXF.
<jaxws:endpoint id="myEndpoint" address="MyServicePort"
serviceClass="org.apache.hello_world_soap_http.GreeterImpl" >
<jaxws:properties>
<!-- Set the publishedEndpointUrl which could override the service
address from generated WSDL as you want -->
<entry key="publishedEndpointUrl"
value="http://www.simple.com/services/test" />
</jaxws:properties>
</jaxws:cxfEndpoint>
On 6/18/11 2:42 PM, Oliver Wulff wrote:
> Hi there
>
> Does there exist a way to figure out the fully qualified endpoint address for an http based endpoint at startup time independent of the underlying container (servlet, osgi, jetty)?
>
> The following way works for an incoming request but I'm looking for a way during startup:
>
> HttpServletRequest req = (HttpServletRequest)msg.get("HTTP.REQUEST")
> if (req != null) {
> ... = req.getRequestUrl();
> }
>
>
> Thanks
> Oli
>
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang
Re: Fully qualified endpoint address at startup time
Posted by Willem Jiang <wi...@gmail.com>.
It's hard to know what the exactly the services address is when you
start the the endpoint in the servlet or osgi container.
The address will be changed if your war or servlet configure is changed.
If you already know the physical address, you may consider to use
publishedEndpointUrl property to set the address which will be used in
the WSDL that is generate dynamically from CXF.
<jaxws:endpoint id="myEndpoint" address="MyServicePort"
serviceClass="org.apache.hello_world_soap_http.GreeterImpl" >
<jaxws:properties>
<!-- Set the publishedEndpointUrl which could override the service
address from generated WSDL as you want -->
<entry key="publishedEndpointUrl"
value="http://www.simple.com/services/test" />
</jaxws:properties>
</jaxws:cxfEndpoint>
On 6/18/11 2:42 PM, Oliver Wulff wrote:
> Hi there
>
> Does there exist a way to figure out the fully qualified endpoint address for an http based endpoint at startup time independent of the underlying container (servlet, osgi, jetty)?
>
> The following way works for an incoming request but I'm looking for a way during startup:
>
> HttpServletRequest req = (HttpServletRequest)msg.get("HTTP.REQUEST")
> if (req != null) {
> ... = req.getRequestUrl();
> }
>
>
> Thanks
> Oli
>
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang