During development the REST service (Spring Boot 1.1.18) all seems to went fine, but as we executed different performance and load test the service stopped to response with following error:
org.apache.tomcat.util.net.NioEndpoint log -
java.lang.NoClassDefFoundError: org/apache/tomcat/util/ExceptionUtils
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:711) ~[tomcat-embed-core-7.0.55.jar!/:7.0.55]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]
The tests covers this workflow:
The service didn't crash totally, it is still reachable via JMX, but doesn't respond on HTTP - requests.
I'm searching for a reason, but with no luck.
UPDATE:
I added JAVA_OPTS for heap, stack tuning and permanent generation size and now the service is stable and performs much better.
-Xmx768m -Xms512m -Xss4m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:PermSize=128m
That's great, but why?
UPDATE:
Nothing help's, the error still remains, also with Sprint Boot 1.2.0
have you ever run "gradle clean" or "mvn clean" in the source code directory, which could remove the fat jar generated by spring boot, it should be the root cause for the exception. Since the running jvm cannot find the class file which is removed.
If you repackage the fat spring-boot JAR file, the positions of beginnings of subjars change. It happens when you change something in properties file/xml in your fat-jar. You do it when you edit sometething in the configuration file with mc (mcedit) application. Put your configuration files outside the fat jar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With