使用cxf在Android设备上创建webservice?

时间:2015-03-10 07:18:00

标签: android web-services soap cxf

我能够使用Apache CXF在桌面java中创建webservice。但是,我需要它在Android设备上工作。

问题是Android中没有java.ws个包。我已经将java.ws类的所有必需jar复制到android项目的libs文件夹中,但是在dexing(在IDE中构建应用程序)时,我有下一个错误:

Error:Android Pre Dex: [android-ws-combine.jar] trouble processing "javax/xml/bind/Binder.class":
Error:Android Pre Dex: [android-ws-combine.jar] Ill-advised or mistaken usage of a core class (java.* or javax.*)
Error:Android Pre Dex: [android-ws-combine.jar] when not building a core library.
Error:Android Pre Dex: [android-ws-combine.jar] This is often due to inadvertently including a core library file
Error:Android Pre Dex: [android-ws-combine.jar] in your application's project, when using an IDE (such as
Error:Android Pre Dex: [android-ws-combine.jar] Eclipse). If you are sure you're not intentionally defining a
Error:Android Pre Dex: [android-ws-combine.jar] core class, then this is the most likely explanation of what's
Error:Android Pre Dex: [android-ws-combine.jar] going on.
Error:Android Pre Dex: [android-ws-combine.jar] However, you might actually be trying to define a class in a core
Error:Android Pre Dex: [android-ws-combine.jar] namespace, the source of which you may have taken, for example,
Error:Android Pre Dex: [android-ws-combine.jar] from a non-Android virtual machine project. This will most
Error:Android Pre Dex: [android-ws-combine.jar] assuredly not work. At a minimum, it jeopardizes the
Error:Android Pre Dex: [android-ws-combine.jar] compatibility of your app with future versions of the platform.
Error:Android Pre Dex: [android-ws-combine.jar] It is also often of questionable legality.
Error:Android Pre Dex: [android-ws-combine.jar] If you really intend to build a core library -- which is only
Error:Android Pre Dex: [android-ws-combine.jar] appropriate as part of creating a full virtual machine
Error:Android Pre Dex: [android-ws-combine.jar] distribution, as opposed to compiling an application -- then use
Error:Android Pre Dex: [android-ws-combine.jar] the "--core-library" option to suppress this error message.
Error:Android Pre Dex: [android-ws-combine.jar] If you go ahead and use "--core-library" but are in fact
Error:Android Pre Dex: [android-ws-combine.jar] building an application, then be forewarned that your application
Error:Android Pre Dex: [android-ws-combine.jar] will still fail to build or run, at some point. Please be
Error:Android Pre Dex: [android-ws-combine.jar] prepared for angry customers who find, for example, that your
Error:Android Pre Dex: [android-ws-combine.jar] application ceases to function once they upgrade their operating
Error:Android Pre Dex: [android-ws-combine.jar] system. You will be to blame for this problem.
Error:Android Pre Dex: [android-ws-combine.jar] If you are legitimately using some code that happens to be in a
Error:Android Pre Dex: [android-ws-combine.jar] core package, then the easiest safe alternative you have is to
Error:Android Pre Dex: [android-ws-combine.jar] repackage that code. That is, move the classes in question into
Error:Android Pre Dex: [android-ws-combine.jar] your own package namespace. This means that they will never be in
Error:Android Pre Dex: [android-ws-combine.jar] conflict with core system classes. JarJar is a tool that may help
Error:Android Pre Dex: [android-ws-combine.jar] you in this endeavor. If you find that you cannot do this, then
Error:Android Pre Dex: [android-ws-combine.jar] that is an indication that the path you are on will ultimately
Error:Android Pre Dex: [android-ws-combine.jar] lead to pain, suffering, grief, and lamentation.
Error:Android Pre Dex: [android-ws-combine.jar] 1 error; aborting

我该怎么办?在Android上公开webservice的任何其他方式/方法?

PS。 android-ws-combine.jar已下载here

PPS。实际上我并不认为除了注释之外,真正使用过像javax.ws这样的桌面软件包。我认为Web服务实现类完全在CXF中。

1 个答案:

答案 0 :(得分:1)

好吧,我做到了 - 必须修补cxf核心,cxf传输,cxf发现api,端口jaxb到android,补丁txw,编辑wsdls和捆绑默认wsdls(如ws-addressing),补丁资源加载(如所有Android构建器删除META / *资源,修补程序获取包注释(android不支持)。 2周10h调试/修补和udp数据包拦截