-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue on release 4.x #30
Comments
Hi dinosn 👋 thanks for reporting 👍 I know where the problem is, but the solution isn't obvious. There are some design decisions involved that need to be clarified first. Your problem is related to the action system, which is a deprecated feature of Java RMI. remote-method-guesser v4.x.x attempts to inspect the destination of bound names that are registered in the registry. rmg basically asks the registry where to find the object and the registry returns a remote reference. This reference is then inspected by using reflection. In your case, the registry does not return a registry right away, but an activatable reference. As far as I understand it, this is a reference that points to an activator (another RMI service, comparable to the registry or the DGC) and that contains an ID that indicates the underlying object type. With this reference you can now ask the activator to activate the corresponding object, and this results in the final reference for the actual remote object. The advantage is that remote objects do not need to be available all the time, but can be bound and exposed on demand. The design decision is now how rmg should handle this. Should it inspect the reference and only report that it's activatable or should it activate it to report the actual target? The best solution is probably making automatic activation optional. But I'm not sure yet. However, as already mentioned, the activation features were removed in 2021 and are no longer supported. That being said, I'm still interested to implement support for your case. I will check how to build a test system and start working on it soon. Do you have your system still available for testing new release candidates? This would be great 😄 Best |
Added an activation system to the example server. This can be used to reproduce the error mentioned in issue #30. The code still throws one exception where I'm not sure from where its coming from. However, the server seems to be functional. This commit probably crashes the pipeline, as the activation system was removed from more recent jdk packages. We will need to investigate whats the best way to build it in future.
Added a first draft for activation support that addresses issue #30. The basic operations like enum should already be fully functional for java versions that still containt the activation system related classes. More complex operations need to be tested and may not be fully functional yet for ActivatableRef types. Furthermore, support for java versions that miss the activation classes needs to be implemented.
remote-method-guesser v4.3.0 was just released and addresses this issue. [qtc@devbox ~]$ rmg enum 172.17.0.2 1098
[+] RMI registry bound names:
[+]
[+] - activation-test
[+] --> de.qtc.rmg.server.activation.IActivationService (unknown class)
[+] Activator: iinsecure.dev:1098 ActivationID: 6fd4e3c:180ac45a068:-7ff1
[+] - activation-test2
[+] --> de.qtc.rmg.server.activation.IActivationService2 (unknown class)
[+] Activator: iinsecure.dev:1098 ActivationID: 6fd4e3c:180ac45a068:-7fee
[+] - plain-server
[+] --> de.qtc.rmg.server.interfaces.IPlainServer (unknown class)
[+] Endpoint: iinsecure.dev:41867 TLS: no ObjID: [6fd4e3c:180ac45a068:-7fec, 969949632761859811]
[+] - java.rmi.activation.ActivationSystem
[+] --> sun.rmi.server.Activation$ActivationSystemImpl_Stub (known class: RMI Activation System)
[+] Endpoint: iinsecure.dev:1098 TLS: no ObjID: [0:0:0, 4] So instead of showing information on the associated remote object (that may does not already exist in the case of [qtc@devbox ~]$ rmg enum 172.17.0.2 1098 --activate
[+] RMI registry bound names:
[+]
[+] - activation-test
[+] --> de.qtc.rmg.server.activation.IActivationService (unknown class)
[+] Activator: iinsecure.dev:1098 ActivationID: 6fd4e3c:180ac45a068:-7ff1
[+] Endpoint: iinsecure.dev:37597 TLS: no ObjID: [1c74dc89:180ac521427:-7ffb, 3078273701606404425]
[+] - activation-test2
[+] --> de.qtc.rmg.server.activation.IActivationService2 (unknown class)
[+] Activator: iinsecure.dev:1098 ActivationID: 6fd4e3c:180ac45a068:-7fee
[+] Endpoint: iinsecure.dev:35721 TLS: yes ObjID: [1c74dc89:180ac521427:-7ff8, 6235870260204364974]
[+] - plain-server
[+] --> de.qtc.rmg.server.interfaces.IPlainServer (unknown class)
[+] Endpoint: iinsecure.dev:41867 TLS: no ObjID: [6fd4e3c:180ac45a068:-7fec, 969949632761859811]
[+] - java.rmi.activation.ActivationSystem
[+] --> sun.rmi.server.Activation$ActivationSystemImpl_Stub (known class: RMI Activation System)
[+] Endpoint: iinsecure.dev:1098 TLS: no ObjID: [0:0:0, 4] Currently, Best, |
Hi ! I have the following issue on the 4.x releases,
The same command using 3.2.2 or any of the other 3.x version will work without problem.
The text was updated successfully, but these errors were encountered: