mockserver
mockserver copied to clipboard
Docker errors using javascript template
Describe the issue Lots of errors in the logs as per below.
I believe the cause is use of JDK 17 which does not have nashorn.
2023-07-12 21:57:17 5.15.0 INFO 1080 jdk/nashorn/api/scripting/ClassFilter
java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ClassFilter
at org.mockserver.mock.action.http.HttpResponseTemplateActionHandler.getJavaScriptTemplateEngine(HttpResponseTemplateActionHandler.java:68)
at org.mockserver.mock.action.http.HttpResponseTemplateActionHandler.handle(HttpResponseTemplateActionHandler.java:41)
at org.mockserver.mock.action.http.HttpActionHandler.lambda$null$3(HttpActionHandler.java:113)
at org.mockserver.mock.action.http.HttpActionHandler.handleAnyException(HttpActionHandler.java:340)
at org.mockserver.mock.action.http.HttpActionHandler.lambda$processAction$4(HttpActionHandler.java:112)
at org.mockserver.scheduler.Scheduler.run(Scheduler.java:94)
at org.mockserver.scheduler.Scheduler.schedule(Scheduler.java:120)
at org.mockserver.mock.action.http.HttpActionHandler.processAction(HttpActionHandler.java:112)
at org.mockserver.netty.HttpRequestHandler.channelRead0(HttpRequestHandler.java:189)
at org.mockserver.netty.HttpRequestHandler.channelRead0(HttpRequestHandler.java:51)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.mockserver.dashboard.DashboardWebSocketHandler.channelRead(DashboardWebSocketHandler.java:137)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.mockserver.netty.websocketregistry.CallbackWebSocketServerHandler.channelRead(CallbackWebSocketServerHandler.java:57)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: jdk.nashorn.api.scripting.ClassFilter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 59 more
What you are trying to do Description of what you are trying to do so we can understand the context of the problem
MockServer version 5.15.0 Docker
To Reproduce Anything that uses the templateType JAVASCRIPT e.g.
{
"id": "f0a2e028-d25e-420e-a1be-3168f90a4aab",
"priority": 0,
"httpRequest": {
"method": "POST",
"path": "/v1/generate/url",
"headers": {
"content-type": ["application/json"]
}
},
"times": {
"unlimited": true
},
"timeToLive": {
"unlimited": true
},
"httpResponseTemplate": {
"template": "return { statusCode: 200, headers: { \"Content-Type\" : [ \"application/json\" ] }, body: {accessUrl: JSON.parse(request.body.json).externalReference} };",
"templateType": "JAVASCRIPT"
}
},
How you are running MockServer (i.e maven plugin, docker, etc) Docker
-
Code you used to create expectations As Above
-
What error you saw As above
Expected behaviour No errors
MockServer Log As above
I have been forced to migrate to javascript templating because https://github.com/mock-server/mockserver/issues/1773 and now I face this issue as well when I tried to upgrade the version. Could you please take a look?
seems to be related to https://github.com/mock-server/mockserver/issues/1326#issue-1243009376 i am expiring the same problem
I ran into this exact same problem.
I've managed to get it working with the following dockerfile, building nashorn, renaming all the classes into the old namespace with jarjar, and copying the jars over into the mockserver libs directory:
FROM openjdk:12-alpine as jarjar-build
RUN apk add git
RUN mkdir -p /build
WORKDIR /build
RUN git clone --depth 1 --branch fix-jdk11 https://github.com/redcape/jarjar
WORKDIR /build/jarjar
RUN ./gradlew jar
FROM alpine as nashorn-build
RUN apk add git openjdk17 apache-ant
RUN mkdir -p /build/
WORKDIR /build/
RUN git clone --depth 1 https://github.com/openjdk/nashorn
WORKDIR /build/nashorn/make/nashorn
RUN ant jar
COPY --from=jarjar-build /build/jarjar/jarjar-command/build/libs/jarjar-command-1.1.1.jar ./jarjar.jar
COPY nashorn.rename.rules .
RUN java -jar jarjar.jar /build/nashorn/build/nashorn/dist/nashorn.jar --rules ./nashorn.rename.rules --output /build/nashorn/build/nashorn/dist/nashorn.renamed.jar
FROM mockserver/mockserver
COPY --from=nashorn-build /build/nashorn/build/nashorn/dist/nashorn.renamed.jar /libs/nashorn.renamed.jar
COPY --from=nashorn-build /build/nashorn/build/nashorn/dependencies/*.jar /libs/.
ARG MOCK_FILE
COPY ${MOCK_FILE} /mockdata/${MOCK_FILE}
ENV MOCKSERVER_INITIALIZATION_JSON_PATH=/mockdata/${MOCK_FILE}
nashorn.rename.rules:
rule org.openjdk.nashorn.** jdk.nashorn.@1
Of particular note, the main branch of jarjar doesn't work, you need to use the fork from https://github.com/shevek/jarjar/pull/23 for that fix, otherwise jarjar won't rename all the classes properly.
(The last 3 lines of the dockerfile aren't relevant to the issue and can be removed)
I am trying this docker file, getting:
Failed generating bytecode for
any idea?
This and any other string-based references to class paths is my guess. I doubt jarjar will be modifying any strings like that, so short of patching the nashorn code directly I don't really see a workaround with this jarjar renaming method.
My use case is admittedly simple right now: I'm essentially just returning a response that references a single field in the request, so it seems it's not a suitable workaround for anything much more complex than that.
EDIT: example of a template that's working for me:
"httpResponseTemplate": {
"templateType": "JAVASCRIPT",
"template": "const matches = JSON.parse(request.body).signup.email.match(/^(\\d+).([^@]+)@test/); return { statusCode: parseInt(matches[1]), headers: { 'access-control-allow-origin': '*', 'access-control-allow-methods': 'POST' }, body: { type: 'JSON', json: { error: { code: matches[2] } } } }"
}
OK, got it, thank you does an integrated solution in mockserver is planned?
HI, ok so I manually created a version of nashorn with the relevant packages changes and added to the mockserver dependencies lib, I am not getting the ClassNotFoundException but when the actual parse is done I am getting:
Caused by:
this the template I am using:
req = JSON.parse(request.body.json).data[0].siteSyncRecord; return {statusCode:200,headers:{'Content-Type':['application/json']},body:{data:[{siteSyncRecord:{externalId:req.externalId,accountId:req.accountId,displayName:req.displayName,internalId:req.externalId-3252}}]}}
and the request is:
{ "method" : "....", "path" : "...", "headers" : { ... }, ... "body" : { "contentType" : "application/json", "type" : "JSON", "json" : { "data" : [ { "siteSyncRecord" : { "externalId" : 693137481, "accountId" : 123, "displayName" : "123.com", "internalId" : null } } ] } } }
full stacktrace:
at org.mockserver.templates.engine.javascript.JavaScriptTemplateEngine.executeTemplate(JavaScriptTemplateEngine.java:109)
at org.mockserver.mock.action.http.HttpResponseTemplateActionHandler.handle(HttpResponseTemplateActionHandler.java:50)
at org.mockserver.mock.action.http.HttpActionHandler.lambda$null$3(HttpActionHandler.java:113)
at org.mockserver.mock.action.http.HttpActionHandler.handleAnyException(HttpActionHandler.java:340)
at org.mockserver.mock.action.http.HttpActionHandler.lambda$processAction$4(HttpActionHandler.java:112)
at org.mockserver.scheduler.Scheduler.run(Scheduler.java:94)
at org.mockserver.scheduler.Scheduler.schedule(Scheduler.java:120)
at org.mockserver.mock.action.http.HttpActionHandler.processAction(HttpActionHandler.java:112)
at org.mockserver.netty.HttpRequestHandler.channelRead0(HttpRequestHandler.java:189)
at org.mockserver.netty.HttpRequestHandler.channelRead0(HttpRequestHandler.java:51)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.mockserver.dashboard.DashboardWebSocketHandler.channelRead(DashboardWebSocketHandler.java:137)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.mockserver.netty.websocketregistry.CallbackWebSocketServerHandler.channelRead(CallbackWebSocketServerHandler.java:57)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by:
any idea?
(same is working with previous mockserver version on amd machine)
Hi, I manage to overcome the issue above, I had to update the json template. after adding the refactored nashorn jar and dependencies and building the docker image on top arm64 image (arm64v8/amazoncorretto:17-alpine3.19) I had to do the following change:
my request structure is:
`{
"body": { "contentType": "application/json", "type": "JSON", "json": { "data": [ { "siteSyncRecord": { "externalId": 693137481, "accountId": 123, "displayName": "123.com", "internalId": null } } ] } } }`
the original template (that was working in version 5.5.4:
"httpResponseTemplate": { "template": "req = JSON.parse(request.body.json).data[0].siteSyncRecord; return {statusCode:200,headers:{'Content-Type':['application/json']},body:{data:[{siteSyncRecord:{externalId:req.externalId,accountId:req.accountId,displayName:req.displayName,internalId:req.externalId-3252}}]}}", "templateType": "JAVASCRIPT" }
the updated one:
"httpResponseTemplate": { "template": "req=JSON.parse(request.body).data[0].siteSyncRecord; return {'statusCode':200,'headers':{'Content-Type':['application/json']},'body':{data:[{siteSyncRecord:{'externalId':req.externalId,'accountId':req.accountId,'displayName':req.displayName,'internalId':req.externalId-3252}}]}}", "templateType": "JAVASCRIPT" }
hope it will help others, thanks
Hi! I have the same issue for the following expectation:
{
"httpRequest": {
"method": "GET",
"path": "/some/click"
},
"httpResponseTemplate": {
"template": "return { statusCode: 301, headers: { 'Location': [ 'http://domain.test?token=' + (request.queryStringParameters['token'] && request.queryStringParameters['token'][0]) ] } };",
"templateType": "JAVASCRIPT"
}
}
With the same error in logs
2024-08-05 19:11:51 5.15.0 INFO 80 jdk/nashorn/api/scripting/ClassFilter
2024-08-05T19:11:51.879373497Z java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ClassFilter
2024-08-05T19:11:51.879376867Z at org.mockserver.mock.action.http.HttpResponseTemplateActionHandler.getJavaScriptTemplateEngine(HttpResponseTemplateActionHandler.java:68)
2024-08-05T19:11:51.879379583Z at org.mockserver.mock.action.http.HttpResponseTemplateActionHandler.handle(HttpResponseTemplateActionHandler.java:41)
2024-08-05T19:11:51.879382138Z at org.mockserver.mock.action.http.HttpActionHandler.lambda$null$3(HttpActionHandler.java:113)
2024-08-05T19:11:51.879384687Z at org.mockserver.mock.action.http.HttpActionHandler.handleAnyException(HttpActionHandler.java:340)
2024-08-05T19:11:51.879387287Z at org.mockserver.mock.action.http.HttpActionHandler.lambda$processAction$4(HttpActionHandler.java:112)
2024-08-05T19:11:51.879389839Z at org.mockserver.scheduler.Scheduler.run(Scheduler.java:94)
2024-08-05T19:11:51.879391349Z at org.mockserver.scheduler.Scheduler.schedule(Scheduler.java:120)
2024-08-05T19:11:51.879392858Z at org.mockserver.mock.action.http.HttpActionHandler.processAction(HttpActionHandler.java:112)
2024-08-05T19:11:51.879394372Z at org.mockserver.netty.HttpRequestHandler.channelRead0(HttpRequestHandler.java:189)
2024-08-05T19:11:51.879395954Z at org.mockserver.netty.HttpRequestHandler.channelRead0(HttpRequestHandler.java:51)
2024-08-05T19:11:51.879399582Z at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
2024-08-05T19:11:51.879401182Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879402792Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879404364Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879420209Z at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
2024-08-05T19:11:51.879422262Z at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
2024-08-05T19:11:51.879423823Z at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
2024-08-05T19:11:51.879425348Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
2024-08-05T19:11:51.879428073Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879429674Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879431257Z at org.mockserver.dashboard.DashboardWebSocketHandler.channelRead(DashboardWebSocketHandler.java:137)
2024-08-05T19:11:51.879433076Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879435581Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879438257Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879440406Z at org.mockserver.netty.websocketregistry.CallbackWebSocketServerHandler.channelRead(CallbackWebSocketServerHandler.java:57)
2024-08-05T19:11:51.879442450Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879444315Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879446368Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879448443Z at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
2024-08-05T19:11:51.879450730Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879452734Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879454947Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879457129Z at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
2024-08-05T19:11:51.879459768Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879461848Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879463911Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879470046Z at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
2024-08-05T19:11:51.879472976Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879475503Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879478370Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879480808Z at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
2024-08-05T19:11:51.879483268Z at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
2024-08-05T19:11:51.879485920Z at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
2024-08-05T19:11:51.879488052Z at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
2024-08-05T19:11:51.879491427Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
2024-08-05T19:11:51.879493978Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879496054Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879498261Z at org.mockserver.netty.unification.PortUnificationHandler.switchToHttp(PortUnificationHandler.java:335)
2024-08-05T19:11:51.879500954Z at org.mockserver.netty.unification.PortUnificationHandler.decode(PortUnificationHandler.java:173)
2024-08-05T19:11:51.879503702Z at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
2024-08-05T19:11:51.879506148Z at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
2024-08-05T19:11:51.879508394Z at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
2024-08-05T19:11:51.879510322Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2024-08-05T19:11:51.879512612Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879514455Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2024-08-05T19:11:51.879516376Z at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
2024-08-05T19:11:51.879518536Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
2024-08-05T19:11:51.879521575Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2024-08-05T19:11:51.879524307Z at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
2024-08-05T19:11:51.879530341Z at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
2024-08-05T19:11:51.879533497Z at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
2024-08-05T19:11:51.879536384Z at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
2024-08-05T19:11:51.879538613Z at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
2024-08-05T19:11:51.879540435Z at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
2024-08-05T19:11:51.879542407Z at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
2024-08-05T19:11:51.879544752Z at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
2024-08-05T19:11:51.879546871Z at java.base/java.lang.Thread.run(Thread.java:833)
2024-08-05T19:11:51.879549231Z Caused by: java.lang.ClassNotFoundException: jdk.nashorn.api.scripting.ClassFilter
2024-08-05T19:11:51.879551916Z at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
2024-08-05T19:11:51.879554085Z at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
2024-08-05T19:11:51.879556731Z at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
2024-08-05T19:11:51.879559006Z ... 67 more