Yesterday I’ve seen another example of Oracle messing up Java and Java standards. This time, it was Tyrus.
tl;dr : You won’t be able to use Tyrus on Openshift because Tyrus is a piece of crap!
In a recent project of mine I needed to use Websockets. To experiment with things about latency on Openshift, I created a small application where server echoes what it receives and client computes the latency.
What can go wrong, right? I know Openshift supports websockets. All I have to do is bind the host and port that I receive.
Well, it didn’t work. I was always receiving
java.net.SocketException: Permission denied. I thought I misunderstood the
DIY cartridge’s environment variables.
So, I gave running Wildfly server with DIY cartridge a try. It worked!
I tried the same host, port, context path with my app. No way!
Then I thought maybe there is something wrong with the Tyrus RI. And, yes, there is!
See this fucking awful piece of crap: Hostname is not passed to server factory!
Well, even if it would be passed, there is no hostname parameter in this piece of shit: GrizzlyServerContainer.
It is always using the host
Well, it explains why I was never successful with deploying to Openshift. I had to bind to IP given by Openshift, but hostname parameter I pass was never used in Tyrus!
What does Tyrus have to do with Java? Well, it is reference implementation of a Java Specification.
Well, good old days are behind where a reference implementation of a JSR actually works and good for POCs even though it is not the best choice for production usages.
We have seen lots of other examples. Mojarra is another RI which became horseshit after Oracle.
Shame on you Oracle for fucking up Java, again!
Have I reported the problem? No I haven’t. I won’t even bother reporting to this horrible project.
I am gonna migrate to Undertow from Jboss. At least we still have Jboss.