Problema no Carregador de Classe Customizada Java
Estou enviando um objeto de classe do cliente para o lado do servidor. Toda vez que o servidor precisa carregar o objeto Classe enviado pelo clienteem vez de reutilizar pelo modelo de delegação pai (quando foi carregado durante a 1ª iteração).
Estou tentando usar um carregador de classes personalizado no lado do servidor cujaloadClass(String)
simplesmente chamafindClass()
em vez de verificar com a hierarquia pai. Para conseguir isso, estou fazendo o seguinte:
Class cl = com.example.XYZ.class;
String path = cl.getName().replace('.', '/') + ".class";
InputStream is = cl.getClassLoader().getResourceAsStream(path);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int data = -1;
while((data=is.read())!=-1)
bos.write(data);
byte[] classBinaryData = bos.toByteArray();
Estou enviandoclassBinaryData
para o lado do servidor.
byte[]
, verifique se é o mesmo que no lado do cliente, combinando a soma de verificação MD5, então crio uma nova instância do meu carregador de classes personalizado e passo a matriz de bytes para que possa ser usada na chamadadefineClass
de dentrofindClass
.No entanto, estou recebendo um dos erros (dependendo da maneira como eu crio byte [] da classe.)
Incompatible magic value ..... in class file <Unknown>
OU
com/example/XYZ (wrong name: com/example/XYZ)
vindo dedefineClass
Preciso de ajuda para descobrir o erro na minha abordagem / código.