Google App Engine(GAE)WEB-INF / lib订单

时间:2016-01-21 07:34:09

标签: eclipse google-app-engine jar mqtt

嘿伙计们,我正在开发一个使用Google App Engine的项目。要从我的设备获取数据,我们正在使用MQTT。 org.eclipse.paho.client.mqttv3。*库使用“client.connect()”启动一个Thread。 经过一些研究,我发现在使用GAE时你不能简单地创建线程。显示以下错误: java.security.AccessControlException:拒绝访问(“java.lang.RuntimePermission”“modifyThreadGroup”)

所以我继续搜索,有人告诉使用以下代码而不是“正常”线程:

线程monitoringThread = ThreadManager.createThreadForCurrentRequest(new Runnable(){..}

所以我反编译了paho库,查找创建Thread的位置并更改它。 我创建了一个新类,将其导出为mymqttclient.jar 在eclipse中,我改变了我在构建的构建顺序 - > Java构建路径 - >顺序和导出所以mymqttclient.jar在mqtt-client-0.4.0.jar之前加载所以它将使用我创建的函数和monitoringThread。

但是我怎样才能改变web-inf / lib中.jar的顺序?

非常感谢你的回答,直到现在我还找不到有用的东西。

2 个答案:

答案 0 :(得分:0)

首先,无需反编译任何可从here获得的Paho代码。

既然您现在可以获得干净的源代码,为什么不只是修改原始类并重建jar文件,那么您不必担心搞乱Classpath以使您的类首先加载?

答案 1 :(得分:0)

好吧,如果有人遇到同样的问题,我会找到答案。

在appengine-web.xml中,您可以指定类似

的顺序
<class-loader-config>
    <priority-specifier filename="mailapi.jar"/>
</class-loader-config>

mailapi.jar现在将优先考虑。

来源:https://cloud.google.com/appengine/docs/java/runtime?hl=en#Java_Class_loader_JAR_ordering