It's all about the answers!

Ask a question

[SOLVED] RTC webservice plugin consumer


Joao Bosco Jares A. Chaves (324813) | asked Jul 04 '13, 9:38 a.m.
edited Jul 07 '13, 8:35 p.m.

Hi folks,

I have a issue with plugin development, that works fine on jetty. This plugin just have to consume a webservice, nothing more. But every time I generate client stubs, the plugin deploy fails. Any one knows an article about it, or related issue? Some logs: http://ctrlv.it/id/MzQxMDUx.


2013-07-03 18:43:05,518 [       Launch callback handler]  WARN eam.repository.provision.internal.ProvisionService  - CRJZS0383W Falha ao resolver o pacote configurável "rtc-check-summary-advisor".




Best Regards!

Accepted answer


permanent link
sam detweiler (12.4k6177201) | answered Jul 04 '13, 4:31 p.m.
I had to package the web service runtime jar files in the lib folder of the plugin so that they would be deployed into the plugin classpath.
Joao Bosco Jares A. Chaves selected this answer as the correct answer

3 other answers



permanent link
Joao Bosco Jares A. Chaves (324813) | answered Jul 04 '13, 3:47 p.m.
 Hi All, 
The issue above was solved with a simple configuration on when I configured the require-bundle with the necessary plugins. But for now, I have a new issue that is the class dependencies do not appear on runtime for the main plugin, and It´s causing a: java.lang.NoClassDefFoundError: br.gov.bnb.gsolintegrations.DeploymentIntegrationProcessInterface.DeploymentIntegrationProcessInterfaceProxy
Anybody knows how to solve this issue?

Thanks!

Comments
1
sam detweiler commented Jul 05 '13, 1:47 p.m. | edited Jul 05 '13, 1:47 p.m.

what jar file is this class

br.gov.bnb.gsolintegrations.DeploymentIntegrationProcessInterface.DeploymentIntegrationProcessInterfaceProxy

in?

again, you must package this with your plugin.


Joao Bosco Jares A. Chaves commented Jul 05 '13, 2:30 p.m.
Hi Sam,

I am very grateful with your hand in this issue. About your question: this interface is part of the second one plugin jar that cover the ws client. For now Iam trying both thing, the first helps the compile of the main plugin, and the second is about you told me, and I created the lib with the jars.. Let try again ;)

Joao Bosco Jares A. Chaves commented Jul 05 '13, 2:52 p.m.
 Sam,

I tried as your approach, I keep the two other plugins, and I created a site project for both (the plugin that has jax-rpc libs, and plugin that has the webservice stubs client). So with this I can compile the main plugin without build fails. So The two site projects was pointed to the lib folder under the main plugin, and this lib folder was configured as a buildpath in my plugin.xml as below, but the error persists.



Joao Bosco Jares A. Chaves commented Jul 05 '13, 2:53 p.m.

 plugin.xml

source.. = src/
output.. = bin/
bin.includes = .,\
               plugin.xml,\
               build.properties,\
               lib/,\
               bin
jars.compile.order = lib/,\
                     .
additional.bundles = br-gov-bnb-s095-webservice,\
                     br-gov-bnb-s095-webservice-usd2
source.lib/ = lib/plugins


Joao Bosco Jares A. Chaves commented Jul 05 '13, 2:54 p.m.

a)  br-gov-bnb-s095-webservice => Contains jax-rpc libs;

b) br-gov-bnb-s095-webservice-usd2 => Contains ws staubs.


Joao Bosco Jares A. Chaves commented Jul 05 '13, 2:57 p.m.

Attached the workspace image:

showing 5 of 6 show 1 more comments

permanent link
Joao Bosco Jares A. Chaves (324813) | answered Jul 05 '13, 1:14 p.m.
 Thank you so much Sam. But I cannot understand the approach that you said, is manual or exist a file (plugin.xml or MANIFEST.MF), if this configuration is in some file where is the tab? I had tried many things but nothing works for me. So, let me explain better the scenarios:

 

a)      I have another plugin that package the webservice client (generated by eclipse). This second one has a dependency by the first one. Where this dependency was configured in dependencies tab of MANIFEST.MF file.

 

b)      I have a plugin that was created by existing jars, where this jars is necessaries to jax-rpc execution (axis.jar, commons-discovery-0.2.jar, javax.wsdl_1.6.2.v201012040545.jar, jaxrpc.jar, org.apache.commons.logging_1.0.4.v201101211617.jar, saaj.jar);

 

 

c)       The third one plugin is the main, who has the advisor class that extends AbstractService and implements IOperationAdvisor. So, just this one has a site project, the others just plugin and feature. Beyond, this project plugin has dependency for the others, and I configured the site project to expose feature and plugins for the all.

 

 

I am posting the files for help in this link: https://www.assembla.com/spaces/usdplugin/documents/cNdvok5yar4R7dacwqEsg8/download/cNdvok5yar4R7dacwqEsg8

 

Provision Status Log: http://www.heypasteit.com/clip/0VI5

 

Thanks a lot.


Comments
Joao Bosco Jares A. Chaves commented Jul 05 '13, 3:13 p.m.

Hi All,


Let´s be simple. Any one knows how to call a jax-rpc webservice by the advisor or some article? 


Best Regards ;)


permanent link
Joao Bosco Jares A. Chaves (324813) | answered Jul 07 '13, 8:35 p.m.
 Thanks a lot, one more time, for your help, sam. So I discovered another way to do it, where the approach is much easier and more helpful in our context. The approach is similar a shared labraries was concept and can be reused by others plugins that has this dependency as a requirement. Well, after read a lot of articles that gave me better understanding about plugins dependency I discovered three ways to do the same thing, where the first one is where I was doing without successful. The second one is the manner that Sam said. And the third one is the manner that is more convenient  in our case. This approach is so much simpler then others in my opinion because all do you want to do is edit just one file, turning the administration simple than other manners that you must edit many files, or many different parts always when some modification is necessary. And better, you can share the libs with other applications (plugins, advisors..) as necessary, where this libs will always stay in the same place, and not replicated for each one. By the way the solution dont care if you dependency is  another plugin or where it is placed, you just whant to write a line one MANIFEST.MF as below:

Bundle-ClassPath: .,
 external:C:/Users/Delljoaobosco/Desktop/lib.jar,
 external:C:/Users/Delljoaobosco/Desktop/usdclient.jar,
 external:C:/Users/Delljoaobosco/Desktop/com.ibm.ws.webservices.thinclient_7.0.0.jar

Just it ;)

Comments
1
sam detweiler commented Jul 07 '13, 9:35 p.m.

fabulous.. thanks.. I didn't know about external:

very cool..

Sam


Joao Bosco Jares A. Chaves commented Jan 08 '14, 2:40 p.m.
I want to reconsider the usage of the external to shared libs. Once I detected an behavior that can generate big mistakes. The behavior is related an lock that the first plugin makes at the lib, so when the second one search for the same lib, does not locate and if exist another one simillar on the class loader, we can get many problems. So, do not use this approach any more.

regards. 

Your answer


Register or to post your answer.