> On Sep 12, 2017, at 12:44 PM, Erik Gahlin <erik.gah...@oracle.com> wrote: > > I guess there are two use cases: > > 1) Simple interoperability with other languages. > 2) A drop in replacement for RMI > > Can a JMX connector be written that support both use cases? I don't know, but > if not it could be that we need both a connector and an adapter.
I think if you were to extend JMXConnector to wrap the REST API you might be able to expose both. But I’m not sure it would be a great solution. I think a second JEP would be a better option. — Kirk > > Erik > >> Hi Kirk, >> >> I guess the term 'connector' here is loosely applied. When I say connector, >> I mean the connector that provides implementation of the package below, >> >> https://docs.oracle.com/javase/8/docs/api/javax/management/remote/package-summary.html >> >> <https://docs.oracle.com/javase/8/docs/api/javax/management/remote/package-summary.html> >> RMIConnector is one implementation of above connector. >> >> On Tuesday 12 September 2017 12:56 PM, Kirk Pepperdine wrote: >>> Hi Harsha, >>> >>> From Chapter 5 of the JMX documentation. "Many different implementations of >>> connectors are possible. In particular, there are many possibilities for >>> the protocol used to communicate over a connection between client and >>> server.” >>> >>> It goes on in the Generic Connector section under "User-Defined Protocols” >>> to say; "While the RMI connector must be present in every implementation of >>> the JMX Remote API, you can also implement a connector based on a protocol >>> that is not defined in the JMX Remote API standard. A typical example of >>> this is a connector based on a protocol that uses HTTP/S. Other protocols >>> are also possible. The JMX specification describes how to implement a >>> connector based on a user-defined protocol.” >>> >>> Unless I’m missing something, this all suggests that there is nothing >>> inherently wrong is using REST behind a JMXConnector. >> I hope above should clarify what I refer to when I say JMXConnector. In that >> sense, REST APIs alone cannot work as connector. In fact, it stands parallel >> to connector, as in it directly wraps the MBeanServer and does not wrap any >> JMXConnector. The JEP has detailed information about where the REST adapter >> sits in the JMX architecture. >> >> Are you suggesting that we implement a JMXConnector that works over REST? >>> >>> As written this JEP pretty much looks like Jolokia. Jolokia is a great >>> project and as such I fail to see the benefits of simply duplicating it. >>> I’d also argue that the usefulness of that project has been some what muted >>> because it is not a drop in replacement for the standard RMI connector >>> meaning that one has to modify an entire tool chain just to make use of it. >>> However, creating a REST based JMXConnector would be immediately useful. >>> As an aside, Jus last week I started on a JMXConnector that uses a shared >>> memory segment for communications. Of course this implementation would only >>> be available for local communications but it offers some advantages over >>> using a socket based protocol, even if that comms is over local loopback. >>> >>> Kind regards, >>> Kirk Pepperdine >> >> Thanks >> Harsha >>> >>> >>> >>>> On Sep 12, 2017, at 9:04 AM, Harsha Wardhana B < >>>> <mailto:harsha.wardhan...@oracle.com>harsha.wardhan...@oracle.com >>>> <mailto:harsha.wardhan...@oracle.com>> wrote: >>>> >>>> Hi Kirk, >>>> >>>> REST APIs work as an adapter and cannot work as a connector. To quote from >>>> the JEP, >>>> >>>> >>>>> The REST adapter is a part of the Distributed services level. Connectors >>>>> mirror the interfaces of agent level services to remote clients, whereas >>>>> adapters transform agent level services to different protocol. The >>>>> proposed functionality will transform Agent level services to REST APIs, >>>>> hence the name "REST adapter". >>>> A connector *must* adhere to the JMX remoting spec. REST APIs cannot >>>> adhere to that because they expose APIs via HTTP and not Java. Hence it is >>>> called an Adapter and not a connector. It can never work as a 'drop-in' >>>> replacement for JMX/RMI Connector. Existing tools using using RMIConnector >>>> will have to be modified to use REST APIs. >>>> >>>> The current JEP does not allow all of the CRUD operations on MBeans. In >>>> the spirit of keeping the APIs language agnostic, only read/write is >>>> supported. It is not possible to specify create/delete REST APIs for JMX >>>> without incorporating language specific features. I would welcome >>>> discussions around including create/delete APIs for MBeans. >>>> In lieu of the above, as of now REST adapter cannot exist independently >>>> and will have to live along-side RMIConnector. >>>> -Harsha >>>> >>>> On Monday 11 September 2017 09:05 PM, Kirk Pepperdine wrote: >>>>> Hi Harsha, >>>>> >>>>> The only reason I mentioned Jolokia is that it’s a project that >>>>> usefulness is some what limited because it is *not* a compliment JMX >>>>> connector and as such cannot be used as a straight drop-in replacement >>>>> for the current RMI based connector. Is your plan here to make it a fully >>>>> compliant connector so that we could configure tooling such as the MBean >>>>> viewers in jConsole and VisualVM (or JMC for that matter) to use a >>>>> restful connector instead of an RMI based connector? IMHO, doing so would >>>>> represent a huge win as I know of quite a few projects that cannot or >>>>> will not use JMX because of it’s reliance on RMI. >>>>> >>>>> Consolidating all of the options under a single flag looks like another >>>>> interesting win. >>>>> >>>>> Kind regards, >>>>> Kirk >>>>> >>>>> >>>>> >>>>>> On Sep 11, 2017, at 4:08 PM, Harsha Wardhana B < >>>>>> <mailto:harsha.wardhan...@oracle.com>harsha.wardhan...@oracle.com >>>>>> <mailto:harsha.wardhan...@oracle.com>> wrote: >>>>>> >>>>>> Hi Erik, >>>>>> >>>>>> On Monday 11 September 2017 07:14 PM, Erik Gahlin wrote: >>>>>>> Hi Harsha, >>>>>>> >>>>>>> I haven't looked at Jolokia, or know what is the most reasonable >>>>>>> approach in this case, but as a principle, I think we should strive for >>>>>>> the best possible design rather than trying to be compatible with third >>>>>>> party tools. >>>>>> Agreed. That will always be the first priority. That is the reason HTTP >>>>>> GET interfaces will not be changed. I am undecided if the POST payloads >>>>>> need to be changed (without compromising the REST design principles) to >>>>>> increase adoption of this feature. >>>>>>> >>>>>>> How will the command line look like to start the agent with the rest >>>>>>> adapter? >>>>>>> >>>>>>> In the past there have been discussions about adding syntactic sugar >>>>>>> for -Dcom.sun.management, i.e. >>>>>>> >>>>>>> -Xmanagement:ssl=false,port=7091,authenticate=false >>>>>>> >>>>>>> instead of >>>>>>> >>>>>>> -Dcom.sun.management.jmxremote.ssl=false >>>>>>> -Dcom.sun.management.jmxremote.port=7091 >>>>>>> -Dcom.sun.management.jmxremote.authenticate=false >>>>>>> >>>>>>> which is hard to remember, cumbersome to write and error prone since >>>>>>> the parameters are not validated. If we are adding support for REST, it >>>>>>> could perhaps be default, i.e. >>>>>>> >>>>>>> -Xmanagement:ssl=false,authenticate=false,port=80 >>>>>>> >>>>>>> If you want to use JMX over RMI you would specify protocol: >>>>>>> >>>>>>> -Xmanagement:ssl=false,port=7091,authenticate=false,protocol=rmi >>>>>> Yes. There is an enhancement request to add the -Xmanagemet:* syntatic >>>>>> sugar for -Dcom.sun.management.jmxremote.* flags. REST adapter will use >>>>>> one of the above flags though I haven't thought of the exact name for it >>>>>> yet. I will update the JEP with the details of the flag shortly. >>>>>>> >>>>>>> Has there been any thoughts about JMX notifications? >>>>>> Notifications will not be supported in this JEP. >>>>>> MBean Notifications are not a widely used feature and will not be >>>>>> supported via the REST adapter. >>>>>>> >>>>>>> I know it is outside the scope of the JEP, but I think we should take >>>>>>> it into consideration when doing the design, so the functionality could >>>>>>> be added on later without too much difficulty. >>>>>> Notifications can be added without modifying the current design too >>>>>> much. If required, it will be worked upon via an enhancement request. >>>>>>> >>>>>>> Thanks >>>>>>> Erik >>>>>>> >>>>>> Thanks >>>>>> Harsha >>>>>>>> Hi Martin, >>>>>>>> >>>>>>>> In my opinion, the interfaces exposed by current JEP are lot closer to >>>>>>>> REST style than the interfaces exposed by Jolokia. >>>>>>>> For instance, HTTP GET by default should be used to read resources, >>>>>>>> but it is made part of URL in Jolokia interfaces. >>>>>>>> >>>>>>>> <base-url>/read/<mbean name>/<attribute name>/<inner path> >>>>>>>> >>>>>>>> I would wait on opinions from more people before considering changing >>>>>>>> the current interfaces. >>>>>>>> >>>>>>>> Thanks >>>>>>>> -Harsha >>>>>>>> >>>>>>>> On Wednesday 06 September 2017 11:40 AM, Martin Skarsaune wrote: >>>>>>>>> Hello >>>>>>>>> >>>>>>>>> Would one at least consider adopting the same URL paths and payloads >>>>>>>>> as Jolokia? This could make life a lot easier for third party tools >>>>>>>>> that connect to it. >>>>>>>>> >>>>>>>>> Best Regards >>>>>>>>> >>>>>>>>> Martin Skarsaune >>>>>>>>> >>>>>>>>> ons. 6. sep. 2017 kl. 07:04 skrev Harsha Wardhana B < >>>>>>>>> <mailto:harsha.wardhan...@oracle.com>harsha.wardhan...@oracle.com >>>>>>>>> <mailto:harsha.wardhan...@oracle.com>>: >>>>>>>>> Hi Kirk, >>>>>>>>> >>>>>>>>> Yes. Jolokia was considered and is listed as an alternative in the >>>>>>>>> JEP. >>>>>>>>> >>>>>>>>> Jolokia can serve as a viable alternative but can be bulky. We are >>>>>>>>> looking for simple and lightweight solution. >>>>>>>>> >>>>>>>>> -Harsha >>>>>>>>> >>>>>>>>> On Wednesday 06 September 2017 10:21 AM, Kirk Pepperdine wrote: >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> Have you run into this project? https://jolokia.org >>>>>>>>>> <https://jolokia.org/>. Unfortunately it’s not exactly a drop in >>>>>>>>>> replacement for the standard RMI based JMX connector but it’s not >>>>>>>>>> far off. >>>>>>>>>> >>>>>>>>>> Kind regards, >>>>>>>>>> Kirk >>>>>>>>>> >>>>>>>>> >>>>>>>>>>> On Sep 5, 2017, at 6:30 PM, Erik Gahlin <erik.gah...@oracle.com> >>>>>>>>>>> <mailto:erik.gah...@oracle.com> wrote: >>>>>>>>>>> >>>>>>>>>>> Hi Harsha, >>>>>>>>>>> >>>>>>>>>>> Looping in jmx-dev. >>>>>>>>>>> >>>>>>>>>>>> byte[], short[], int[], float[], double[] >>>>>>>>>>> Should long[] be included there as well? >>>>>>>>>>> >>>>>>>>>>>> The REST adapter will come with a simple and lightweight JSON >>>>>>>>>>>> parser. >>>>>>>>>>> Is this an internal parser or will it be exposed as an API? >>>>>>>>>>> >>>>>>>>>>> If so, how does it relate to JEP 198: Light-Weight JSON API? >>>>>>>>>>> http://openjdk.java.net/jeps/198 <http://openjdk.java.net/jeps/198> >>>>>>>>>>> >>>>>>>>>>> Will com.sun.net.httpserver.HttpServer be used to serve the >>>>>>>>>>> requests? >>>>>>>>>>> >>>>>>>>>>> Thanks >>>>>>>>>>> Erik >>>>>>>>>>> >>>>>>>>>>>> Hi All, >>>>>>>>>>>> >>>>>>>>>>>> Please review the JEP for REST APIs for JMX : >>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8171311 >>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8171311> >>>>>>>>>>>> >>>>>>>>>>>> The JEP aims at providing RESTful web interfaces to MBeans. >>>>>>>>>>>> >>>>>>>>>>>> Access to MBeans registered in a MBeanServer running inside a JVM >>>>>>>>>>>> requires a Java client. Language-agnostic access to MBeans will >>>>>>>>>>>> require spawning a Java client which can be cumbersome. The >>>>>>>>>>>> proposed JEP allows MBeans to be accessed in a >>>>>>>>>>>> language/platform-independent, ubiquitous and seamless manner. >>>>>>>>>>>> >>>>>>>>>>>> Thanks >>>>>>>>>>>> -Harsha >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >