users@javaee-spec.java.net

[javaee-spec users] Re: Eagerly getting host/port of a JAX-RS endpoint

From: Arun Gupta <arun.gupta_at_gmail.com>
Date: Fri, 19 Jun 2015 16:19:36 +0100

>>
>> Currently the registration is happening in @Startup @Singleton.
>> Ideally would like this in a @ApplicationScoped bean but there is no
>> @Startup there.
>>
>
> @Observes @ApplicationScoped startup? or through an extension
> AfterValidation event?

Sample code?

Arun

>
>>
>> > (2) How to access the necessary information like host/port for the
>> > registration.
>> >
>> > JAX-RS typically operates at the level of paths and contexts, not hosts
>> > and ports. Even though you can get a URI with that info, it is really beyond
>> > JAX-RS IMO.
>> >
>>
>> Host/port can be extracted from @UriInfo but that is only after the
>> request has been made.
>
>
> Issue is it can be irrelevant as well (internal calls/public calls etc...).
> JAXRS is passive where container is active on this aspect.
>
>>
>>
>> > As for (1), JAX-RS has its own registration phase for resources,
>> > providers and features. You can do this when defining an Application
>> > subclass and also in any DynamicFeature that is automatically discovered
>> > (which are processed at deploy time). Neither was designed with your use
>> > case in mind, though.
>> >
>>
>> Can host/port information be retrieved in any of those?
>>
>> Arun
>>
>> > — Santiago
>> >
>> >> On Jun 19, 2015, at 7:41 AM, Arun Gupta <arun.gupta_at_gmail.com> wrote:
>> >>
>> >> Yes, that would be the ideal and clean solution.
>> >>
>> >> Filed [1] for tracking.
>> >>
>> >> [1] https://java.net/jira/browse/JAVAEE_SPEC-47
>> >>
>> >> Cheers,
>> >> Arun
>> >>
>> >>
>> >> On Fri, Jun 19, 2015 at 6:52 AM, Antonio Goncalves
>> >> <antonio.goncalves_at_gmail.com> wrote:
>> >>> That brings back a topic we've been talking (and avoiding) for quite a
>> >>> long
>> >>> time : EJB services going back to where they should go.
>> >>>
>> >>> Like @Transactional was created in JTA to be used on any beans,
>> >>> @Startup,
>> >>> @Schedule... should follow the same path. @Startup should go to the
>> >>> Java EE
>> >>> Concurrency spec and be used anywhere.
>> >>>
>> >>> Antonoi
>> >>>
>> >>> On Fri, Jun 19, 2015 at 12:31 PM, Arun Gupta <arun.gupta_at_gmail.com>
>> >>> wrote:
>> >>>>
>> >>>> Already using ZooKeeper as a service registry [1].
>> >>>>
>> >>>> The key question is how does a REST endpoint advertise itself to this
>> >>>> registry. We need a @Startup for a JAX-RS endpoint. Is there an
>> >>>> equivalent?
>> >>>>
>> >>>> [1]
>> >>>>
>> >>>> http://blog.arungupta.me/zookeeper-microservice-registration-discovery/
>> >>>>
>> >>>> Arun
>> >>>>
>> >>>> On Fri, Jun 19, 2015 at 11:00 AM, Romain Manni-Bucau
>> >>>> <rmannibucau_at_gmail.com> wrote:
>> >>>>> Maybe I get it wrong but looks like you need a service registry
>> >>>>> *outside*
>> >>>>> the container itself no?
>> >>>>>
>> >>>>> Then just getting injected a client would make it easy to use.
>> >>>>>
>> >>>>> Le 19 juin 2015 10:19, "Arun Gupta" <arun.gupta_at_gmail.com> a écrit :
>> >>>>>>
>> >>>>>> Currently, I'm using @Startup @Singleton EJB [1] for registering
>> >>>>>> the
>> >>>>>> REST endpoint but the host/port are statically defined. This
>> >>>>>> endpoint
>> >>>>>> could be deployed on a PaaS or a Docker container or somewhere else
>> >>>>>> where the host/port could be different every time.
>> >>>>>>
>> >>>>>> Ideally, I'd love something like:
>> >>>>>>
>> >>>>>> @Path("catalog")
>> >>>>>> @Startup
>> >>>>>> public class CatalogItemREST {
>> >>>>>>
>> >>>>>> @PostConstruct
>> >>>>>> public void init() {
>> >>>>>> // get Host
>> >>>>>> // get Port
>> >>>>>> // register the service
>> >>>>>> }
>> >>>>>> }
>> >>>>>>
>> >>>>>>
>> >>>>>> [1]
>> >>>>>>
>> >>>>>>
>> >>>>>> https://github.com/arun-gupta/microservices/blob/master/microservice/catalog/src/main/java/org/javaee7/wildfly/samples/everest/catalog/CatalogService.java
>> >>>>>>
>> >>>>>> [2]
>> >>>>>>
>> >>>>>>
>> >>>>>> https://github.com/arun-gupta/microservices/blob/master/microservice/catalog/src/main/java/org/javaee7/wildfly/samples/everest/catalog/CatalogItemREST.java
>> >>>>>>
>> >>>>>> Thoughts?
>> >>>>>>
>> >>>>>> Cheers
>> >>>>>> Arun
>> >>>>>>
>> >>>>>> On Fri, Jun 19, 2015 at 1:10 AM, Romain Manni-Bucau
>> >>>>>> <rmannibucau_at_gmail.com> wrote:
>> >>>>>>> @Arun: can you precise the kind of API you expect (pseudo code is
>> >>>>>>> fine)?
>> >>>>>>> Typically I think to these common cases:
>> >>>>>>> - host is 0.0.0.0
>> >>>>>>> - you have N connectors (so how do you select)
>> >>>>>>> - you are behind a proxy (httpd/ngnix)
>> >>>>>>>
>> >>>>>>> Romain
>> >>>>>>>
>> >>>>>>> Le 18 juin 2015 23:52, "Arun Gupta" <arun.gupta_at_gmail.com> a écrit
>> >>>>>>> :
>> >>>>>>>>
>> >>>>>>>> If multiple WARs with JAX-RS REST endpoints are deployed, how are
>> >>>>>>>> URIs
>> >>>>>>>> of these endpoints advertised?
>> >>>>>>>>
>> >>>>>>>> Tried using @Startup @Singleton but there is no
>> >>>>>>>> standard/non-standard
>> >>>>>>>> way to access host/port there.
>> >>>>>>>>
>> >>>>>>>> @PostConstruct for JAX-RS endpoint is not called until the
>> >>>>>>>> endpoint
>> >>>>>>>> is
>> >>>>>>>> invoked once.
>> >>>>>>>>
>> >>>>>>>> @Context UriInfo is only available after the endpoint has been
>> >>>>>>>> invoked.
>> >>>>>>>>
>> >>>>>>>> There is a bit of discussion at:
>> >>>>>>>>
>> >>>>>>>> https://twitter.com/arungupta/status/611493850092322816
>> >>>>>>>>
>> >>>>>>>> Any suggestions?
>> >>>>>>>>
>> >>>>>>>> Cheers
>> >>>>>>>> Arun
>> >>>>>>>>
>> >>>>>>>> --
>> >>>>>>>> http://blog.arungupta.me
>> >>>>>>>> http://twitter.com/arungupta
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> --
>> >>>>>> http://blog.arungupta.me
>> >>>>>> http://twitter.com/arungupta
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> http://blog.arungupta.me
>> >>>> http://twitter.com/arungupta
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Antonio Goncalves
>> >>> Software architect, Java Champion and Pluralsight author
>> >>>
>> >>> Web site | Twitter | LinkedIn | Pluralsight | Paris JUG | Devoxx
>> >>> France
>> >>
>> >>
>> >>
>> >> --
>> >> http://blog.arungupta.me
>> >> http://twitter.com/arungupta
>> >
>>
>>
>>
>> --
>> http://blog.arungupta.me
>> http://twitter.com/arungupta
>
>



-- 
http://blog.arungupta.me
http://twitter.com/arungupta