簡體   English   中英

修復 OSGi 設置中 ByteBuddy 和 Vaadin 的類加載問題

[英]Fix classloading issue with ByteBuddy and Vaadin in OSGi setup

我在 OSGi 設置中遇到 Vaadin 流問題,這似乎與使用聚合物模板時在內部加載某些類的方式有關。 這是我的一些細節問題https://github.com/vaadin/flow/issues/7377

TemplateModelProxyHandler:229ff ,以下代碼用於加載代理類

Class<?> proxyType = proxyBuilder

// Handle bean methods (and abstract methods for error handling)
.method(method -> isAccessor(method) || method.isAbstract())
.intercept(MethodDelegation.to(proxyHandler))

// Handle internal $stateNode methods
.defineField("$stateNode", StateNode.class)
.method(method -> "$stateNode".equals(method.getName()))
.intercept(FieldAccessor.ofField("$stateNode"))

// Handle internal $modelType methods
.defineField("$modelType", BeanModelType.class)
.method(method -> "$modelType".equals(method.getName()))
.intercept(FieldAccessor.ofField("$modelType"))

// Create the class
.name(proxyClassName).make()
.load(classLoader, ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();

在這里,兩個類加載器很重要。 首先,這里是 OSGi Bundle ClassLoader ( classLoader )。 其次,包含類TemplateModelProxyHandler的 Bundle 的類加載器,例如TemplateModelProxyHandler.class.getClassLoader() 有沒有辦法在這里使用兩個類加載器? 有沒有一種簡單的方法可以通過 ByteBuddy 實現這一目標?

查看 Byte Buddy 附帶的MultipleParentClassLoader 它允許您為類加載器指定多個父級並在其中定義一個類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM