Forums

Home » Liferay Portal » English » Liferay Legacy »

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Andy Leung
Web services client portlet
November 14, 2006 5:48 PM
Answer

Andy Leung

Rank: Regular Member

Posts: 134

Join Date: August 4, 2006

Recent Posts

Hi,

I am writing a Salesforce.com web services client portlet; this portlet consumes salesforce web services. They are using AXIS 1.3 so I put this into the /WEB-INF/lib and deployed. The deployment went okay until it loads SOAP binding, it couldn't find concurrent.jar, which is very weird that if this salesforce WS client is a standalone app or normal webapp, it doesn't need concurrent.jar. So I assumed that this concurrent.jar is used by liferay, which is found in /webapp/ROOT/WEB-INF/concurrent.jar, and it is used for something inside the portal.

Now, I moved all these libraries from /webapps/ROOT/WEB-INF/* to c:\tomcat55\shared\lib and ran it again, it ran without any problems!!!

So I guess the problem is that the axis that my WS client portlet loads from /webapps/SalesforceTransformer/WEB-INF/lib/axis.jar cross loads something or requires something inside liferay portal and somehow this changes the classpath or whatsoever, liferay could not find concurrent.jar anymore. Here is my error message if I do NOT move the libraries from ROOT to shared\lib:


01:47:42,828 ERROR [jsp:342]
javax.portlet.PortletException
at com.liferay.portlet.CachePortlet._invoke(CachePortlet.java:304)
at com.liferay.portlet.CachePortlet.processAction(CachePortlet.java:144)

at com.liferay.portal.action.LayoutAction._processPortletRequest(LayoutA
ction.java:232)
at com.liferay.portal.action.LayoutAction._processActionRequest(LayoutAc
tion.java:250)
at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:86)
at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:236)
at com.liferay.portal.struts.PortalRequestProcessor.process(PortalReques
tProcessor.java:189)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
6)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.
java:437)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:825)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.filters.strip.StripFilter.doFilter(StripFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.filters.secure.SecureFilter.doFilter(SecureFilter.java:14
3)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.filters.compression.CompressionFilter.doFilter(Compressio
nFilter.java:115)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter.doFi
lter(LayoutCacheFilter.java:205)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:432)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
rocessConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
lowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: EDU/oswego/cs/dl/util/concurrent/Read
WriteLock
at com.liferay.util.axis.SimpleHTTPSender.<clinit>(SimpleHTTPSender.java
:57)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:177)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
at org.apache.axis.deployment.wsdd.WSDDTargetedChain.makeNewInstance(WSD
DTargetedChain.java:157)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSD
DDeployableItem.java:274)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDe
ployableItem.java:260)
at org.apache.axis.deployment.wsdd.WSDDDeployment.getTransport(WSDDDeplo
yment.java:410)
at org.apache.axis.configuration.FileProvider.getTransport(FileProvider.
java:257)
at org.apache.axis.AxisEngine.getTransport(AxisEngine.java:332)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:163)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.sforce.soap.enterprise.SoapBindingStub.login(SoapBindingStub.java
:1953)
at ca.omron.salesforce.client.SalesforceConnectionManager.connect(Salesf
orceConnectionManager.java:54)
at ca.omron.salesforce.transformer.SalesforceTransformerPortlet.processA
ction(SalesforceTransformerPortlet.java:50)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServl
et.java:83)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
atcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationD
ispatcher.java:574)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDis
patcher.java:499)
at com.liferay.portlet.CachePortlet._invoke(CachePortlet.java:295)
... 40 more

Nested Exception is java.lang.NoClassDefFoundError: EDU/oswego/cs/dl/util/concur
rent/ReadWriteLock
at com.liferay.util.axis.SimpleHTTPSender.<clinit>(SimpleHTTPSender.java
:57)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:177)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
at org.apache.axis.deployment.wsdd.WSDDTargetedChain.makeNewInstance(WSD
DTargetedChain.java:157)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSD
DDeployableItem.java:274)
at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDe
ployableItem.java:260)
at org.apache.axis.deployment.wsdd.WSDDDeployment.getTransport(WSDDDeplo
yment.java:410)
at org.apache.axis.configuration.FileProvider.getTransport(FileProvider.
java:257)
at org.apache.axis.AxisEngine.getTransport(AxisEngine.java:332)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:163)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.sforce.soap.enterprise.SoapBindingStub.login(SoapBindingStub.java
:1953)
at ca.omron.salesforce.client.SalesforceConnectionManager.connect(Salesf
orceConnectionManager.java:54)
at ca.omron.salesforce.transformer.SalesforceTransformerPortlet.processA
ction(SalesforceTransformerPortlet.java:50)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServl
et.java:83)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp
atcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationD
ispatcher.java:574)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDis
patcher.java:499)
at com.liferay.portlet.CachePortlet._invoke(CachePortlet.java:295)
at com.liferay.portlet.CachePortlet.processAction(CachePortlet.java:144)

at com.liferay.portal.action.LayoutAction._processPortletRequest(LayoutA
ction.java:232)
at com.liferay.portal.action.LayoutAction._processActionRequest(LayoutAc
tion.java:250)
at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:86)
at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:236)
at com.liferay.portal.struts.PortalRequestProcessor.process(PortalReques
tProcessor.java:189)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
6)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.
java:437)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:825)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.filters.strip.StripFilter.doFilter(StripFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.filters.secure.SecureFilter.doFilter(SecureFilter.java:14
3)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.filters.compression.CompressionFilter.doFilter(Compressio
nFilter.java:115)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter.doFi
lter(LayoutCacheFilter.java:205)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:432)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
rocessConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
lowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)


In the current test environment, I can afford the change of those libraries but not in production, so any idea that I can get around this problem? Thanks.

Andy
Michael Young
RE: Web services client portlet
November 14, 2006 6:06 PM
Answer

Michael Young

LIFERAY STAFF

Rank: Liferay Master

Posts: 833

Join Date: August 4, 2004

Recent Posts

We do not recommend moving libs from the portal to the shared locations. You should keep a separate copy of your dependencies within your webapps lib directory.
Andy Leung
RE: Web services client portlet
November 14, 2006 8:05 PM
Answer

Andy Leung

Rank: Regular Member

Posts: 134

Join Date: August 4, 2006

Recent Posts

Thank you Michael, I resolved it by copying the entire list of all *.jar from ROOT/WEB-INF/lib to my own portlet's lib. This makes my simple portlet(orignal size of war is about 4Memoticon 14MB afterwards but at least it works!

thanks again.
Hicham Jellab
RE: Web services client portlet
November 15, 2006 7:04 AM
Answer

Hicham Jellab

Rank: New Member

Posts: 20

Join Date: September 26, 2006

Recent Posts

Hi Andy,

I'm working in a Salesforce.com project right now and this includes calling its APIs. Can you please give more details about your integration point ? Are you able to share your work with me ?

Thank you
Andy Leung
RE: Web services client portlet
November 15, 2006 7:22 AM
Answer

Andy Leung

Rank: Regular Member

Posts: 134

Join Date: August 4, 2006

Recent Posts

Definitely.

Basically, I used the API to download the data from Salesforce.com and do data cleansing such as checking duplicates and synchronizing data between Salesforce.com and our AS/400. I use Liferay as user interface and middleware. This program works ass the middleman contains both Salesforce.com API and Hibernate for AS/400.

Another project I worked on was to create Salesforce.com Blackberry middleware. I was unable to use Salesforce.com API on Blackberry MDS because it is too complicated on object type. So I developed Salesforce.com web services client and in there, I exposed my web services to blackberry so my web services client to salesforce is also the web services host for blackberry MDS.

For project details, I am not able to tell you here because it involves some operations but for technical details, you are welcome to ask me anything and I will answer you as ooon as possible if I am able to.

Note: I also tried replicating Salesforce.com objects into our in-house database and it worked flawlessly.

regards,

Andy

Hicham Jellab:
Hi Andy,

I'm working in a Salesforce.com project right now and this includes calling its APIs. Can you please give more details about your integration point ? Are you able to share your work with me ?

Thank you
Michael Young
RE: Web services client portlet
November 15, 2006 9:35 AM
Answer

Michael Young

LIFERAY STAFF

Rank: Liferay Master

Posts: 833

Join Date: August 4, 2004

Recent Posts

You don't need to copy the entire dir, just the ones you need.
Andy Leung
RE: Web services client portlet
November 15, 2006 10:34 AM
Answer

Andy Leung

Rank: Regular Member

Posts: 134

Join Date: August 4, 2006

Recent Posts

But when I copied concurrent.jar, it pops up another dependency trace so I rather copied the whole thing, then deleted those optionals like active-mq.jar, portal-ejb.jar and pdfbox because these files are the most largest. Then I deleted others such as POI and anything that I am sure that I don't need.

Thanks for your reply,

Andy

Michael Young:
You don't need to copy the entire dir, just the ones you need.
Ahmed Hasan
RE: Web services client portlet
March 2, 2011 6:56 AM
Answer

Ahmed Hasan

Rank: Regular Member

Posts: 115

Join Date: April 13, 2007

Recent Posts

Whatever jars you need from the portal level, just make the names of those jars in liferay-plugin-package.properties file of this portalt. Then make the WAR file, the dependent jars will get injected into this WAR and will be available during the runtime.
Nyeem Akhtar
RE: Web services client portlet
February 2, 2012 1:59 AM
Answer

Nyeem Akhtar

Rank: New Member

Posts: 3

Join Date: December 8, 2011

Recent Posts

Except jars required by your project you only need to add "portal-impl.jar" from portal JARS in liferay-plugin-package.properties file (and other files those may be required are axis.jar, commons-discovery.jar, commons-logging.jar, jaxrpc.jar, wsdl4j.jar, xalan.jar, xercesImpl.jar, xml-apis.jar) save it and run, it should work fine.
David H Nebinger
RE: Web services client portlet
February 2, 2012 6:57 AM
Answer

David H Nebinger

Rank: Liferay Legend

Posts: 2210

Join Date: September 1, 2006

Recent Posts

You cannot include portal-impl.jar in liferay-plugin-package.properties. Only one copy of that jar is allowed, and that's in the ROOT/WEB-INF/lib directory.
Nyeem Akhtar
RE: Web services client portlet
February 3, 2012 2:14 AM
Answer

Nyeem Akhtar

Rank: New Member

Posts: 3

Join Date: December 8, 2011

Recent Posts

May be you are right, but for me its working fine, otherwise I keep getting error mentioned above. Please share if you know any other solution for the problem?
David H Nebinger
RE: Web services client portlet
February 3, 2012 5:55 AM
Answer

David H Nebinger

Rank: Liferay Legend

Posts: 2210

Join Date: September 1, 2006

Recent Posts

The stack trace at the top is related to a missing concurrent.jar, the wrong liferay-plugin-package.properties file definition, and also I guess that the OP doesn't know how to add a library to his project when he gets the no class def found exception.

Sure, there are a lot of 'hacks' you can do to make the exceptions go away, but that doesn't make them right, supported, or guaranteed to work.

Copying the portal-impl.jar into your project is worse than a hack - the Liferay build scripts specifically block you from doing it, and you're bypassing it.