I want to give my client limited access to a server dedicated to him where a Java app is running. The client will write some plugins and run the Java app (it's a console app). The app has code which I would like to protect from decompiling and configuration that is potentially accessible from within the plugin as it all will run in the same JVM. I'd like to be sure that the client uses only the API of my app and some standard Java classes but can't do funky class loading and reverse-engineering of my app.
Is there a way to protect my code and config from decompiling / downloading? I know there are numerous topics devoted to obfuscation and encrypting of jar files and general consensus is that protection is not possible but I don't think it relates to my case as I control the execution environment, can set up permissions etc. It's a Ubuntu 12.04 box.
I'm not sure if I can give a client shell access with limited read/execution rights and set it all up securely. Any pointers? Thanks.