dswitzer
05/18/2022, 3:10 PMlucee.runtime.exp.NativeException: can't serialize Object of type [ org.apache.tomcat.util.log.SystemLogHandler ]
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:562)
at lucee.runtime.converter.ScriptConverter._serializeStruct(ScriptConverter.java:204)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:519)
at lucee.runtime.converter.ScriptConverter._serializeComponent(ScriptConverter.java:351)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:512)
at lucee.runtime.converter.ScriptConverter._serializeStruct(ScriptConverter.java:204)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:519)
at lucee.runtime.converter.ScriptConverter._serializeStruct(ScriptConverter.java:204)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:519)
at lucee.runtime.converter.ScriptConverter._serializeComponent(ScriptConverter.java:351)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:512)
at lucee.runtime.converter.ScriptConverter._serializeStruct(ScriptConverter.java:204)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:519)
at lucee.runtime.converter.ScriptConverter._serializeComponent(ScriptConverter.java:351)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:512)
at lucee.runtime.converter.ScriptConverter._serializeStruct(ScriptConverter.java:204)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:519)
at lucee.runtime.converter.ScriptConverter._serializeComponent(ScriptConverter.java:351)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:512)
at lucee.runtime.converter.ScriptConverter._serializeComponent(ScriptConverter.java:351)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:512)
at lucee.runtime.converter.ScriptConverter._serializeStruct(ScriptConverter.java:204)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:519)
at lucee.runtime.converter.ScriptConverter._serializeComponent(ScriptConverter.java:351)
at lucee.runtime.converter.ScriptConverter._serialize(ScriptConverter.java:512)
at lucee.runtime.converter.ScriptConverter.serialize(ScriptConverter.java:611)
at lucee.runtime.functions.dynamicEvaluation.Serialize.call(Serialize.java:35)
I'm not sure why org.apache.tomcat.util.log.SystemLogHandler
is trying to be serialized, but it appears to be related to how the component gets compiled.zackster
05/18/2022, 3:12 PMdswitzer
05/18/2022, 3:57 PMorg.apache.tomcat.util.log.SystemLogHandler
isn't used in our codebase, but there's obviously some dependency that does rely on it.zackster
05/18/2022, 4:19 PMdswitzer
05/18/2022, 4:19 PMdswitzer
05/18/2022, 4:20 PMbdw429s
05/18/2022, 5:02 PMbdw429s
05/18/2022, 5:03 PM_serializeComponent
callsdswitzer
05/18/2022, 5:04 PMbdw429s
05/18/2022, 5:04 PMbdw429s
05/18/2022, 5:05 PMbdw429s
05/18/2022, 5:05 PMbdw429s
05/18/2022, 5:07 PMbdw429s
05/18/2022, 5:08 PMobject [customer.variables.addresss.this.logger.sessioni.requestContext.variables.Coldbox.variables.foo] could not be serialized
or something like that. Would be worth gold here.dswitzer
05/18/2022, 5:12 PMbdw429s
05/18/2022, 5:15 PMbdw429s
05/18/2022, 5:16 PMloader
directory and run
ant fast
About a minute later you have an .lco
file you can drop in the deploy folder and you're ready to test.bdw429s
05/18/2022, 5:17 PMbox.json
{
"luceeSrcDir": "D:/docs/GitHub/Lucee/",
"scripts": {
"compile": "echo 'ant -buildfile ${@luceeSrcDir}loader/build.xml fast' | run && cp '${@luceeSrcDir}loader/target/*.lco' '${serverinfo.serverHomeDirectory}/WEB-INF/lucee-server/deploy/'"
}
}
Where D:/docs/GitHub/Lucee/
is where my Lucee repo is located and I'm using a CommandBox server, so I use a CommandBox env var to find the server home dynamically. ( ${serverinfo.serverHomeDirectory}
)bdw429s
05/18/2022, 5:18 PMcreateObject( 'java', 'lucee.runtime.config.DeployHandler' ).deploy( getPageContext().getConfig().getConfigServer( 'password' ), false );
"password" is my server context password for Luceebdw429s
05/18/2022, 5:20 PMrun-script compile
in CommandBox, and then when it finishes, refresh my test page. I did all the QoQ changes this way and it's a pretty efficient workflow (for a compiled language! 😆 )dswitzer
05/18/2022, 5:23 PMdswitzer
05/18/2022, 5:26 PMcomponent {
public any function init(){
instance.out = createObject( "java", "java.lang.System" ).out;
return this;
}
}
If you save that as x.cfc and then try to run:
obj = new x();
Serialize(obj);
It will throw the org.apache.tomcat.util.log.SystemLogHandler
error.dswitzer
05/18/2022, 5:29 PMdswitzer
05/18/2022, 5:37 PMScrptConverter._serialize()
just wrote the sb
StringBuilder error log before the exception is thrown, that would help a lot. For example, as it gives you the place it choked.
For example, here's the output of the above example code from above (although my names were a little different):
"evaluateComponent("_test","c31d231165a410c67a9a8c57da575e88",{},{"INSTANCE":{"OUT":"
This pretty clearly tells you the error is in serializing the OUT
key in the INSTANCE
variable.bdw429s
05/18/2022, 5:39 PMbdw429s
05/18/2022, 5:40 PMout
printbuffer with one of its own (CommandBox does a similar thing) , but there's not going to be a really good answer to thisbdw429s
05/18/2022, 5:41 PMbdw429s
05/18/2022, 5:41 PMbdw429s
05/18/2022, 5:42 PMbdw429s
05/18/2022, 5:42 PMdswitzer
05/18/2022, 5:53 PMdswitzer
05/18/2022, 9:34 PMbdw429s
05/18/2022, 9:35 PMbdw429s
05/18/2022, 9:35 PMbdw429s
05/18/2022, 9:35 PMbdw429s
05/18/2022, 9:35 PMdswitzer
05/18/2022, 9:50 PMdswitzer
05/18/2022, 9:51 PM