<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=102737" />
  <subtitle>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=102737</id>
  <updated>2026-04-06T08:36:36Z</updated>
  <dc:date>2026-04-06T08:36:36Z</dc:date>
  <entry>
    <title>RE: How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=11858312" />
    <author>
      <name>Ken Barron</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=11858312</id>
    <updated>2011-12-21T08:28:45Z</updated>
    <published>2011-12-21T08:28:45Z</published>
    <summary type="html">See this very useful wiki post for a working example in Liferay 6 of calling a Liferay service using SOAP services and the tunnel-web: &lt;a href="http://www.liferay.com/community/wiki/-/wiki/Main/Web+Service+samples"&gt;http://www.liferay.com/community/wiki/-/wiki/Main/Web+Service+samples&lt;/a&gt;</summary>
    <dc:creator>Ken Barron</dc:creator>
    <dc:date>2011-12-21T08:28:45Z</dc:date>
  </entry>
  <entry>
    <title>RE: How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=3344995" />
    <author>
      <name>Jonas Yuan</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=3344995</id>
    <updated>2009-06-17T19:23:07Z</updated>
    <published>2009-06-17T19:23:07Z</published>
    <summary type="html">Hi Stella, &lt;br /&gt;&lt;br /&gt;Do you get this issue fixed? Any updates on this?&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;&lt;br /&gt;Jonas Yuan&lt;br /&gt;-------------------------&lt;br /&gt;Liferay Books&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.liferay.com/web/jonasxyuan/blog/-/blogs/liferay-book:-liferay-portal-5-2-systems-development"&gt;Liferay Portal 5.2 Systems Development&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.packtpub.com/building-liferay-portal-enterprise-intranets/book"&gt;Liferay Portal Enterprise Intranets&lt;/a&gt;</summary>
    <dc:creator>Jonas Yuan</dc:creator>
    <dc:date>2009-06-17T19:23:07Z</dc:date>
  </entry>
  <entry>
    <title>RE: How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=153372" />
    <author>
      <name>Stella Sjel</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=153372</id>
    <updated>2007-09-17T03:50:22Z</updated>
    <published>2007-09-17T03:50:22Z</published>
    <summary type="html">Hi all..&lt;br /&gt;&lt;br /&gt;Question, &lt;br /&gt;&lt;br /&gt;is it possible to upload an image in photo gallery using soap?&lt;br /&gt;i hope somebody can help.. thank you! &lt;img alt="emoticon" src="@theme_images_path@/emoticons/smile.gif" &gt;</summary>
    <dc:creator>Stella Sjel</dc:creator>
    <dc:date>2007-09-17T03:50:22Z</dc:date>
  </entry>
  <entry>
    <title>RE: How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102789" />
    <author>
      <name>Stella Sjel</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102789</id>
    <updated>2007-08-28T07:47:18Z</updated>
    <published>2007-08-28T07:47:18Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;hi all,&lt;br&gt;&lt;br&gt;solved it by calling &lt;strong&gt;Portal_LayoutService (wsdl)&lt;/strong&gt; addLayout.&lt;br&gt;&lt;br&gt;but now i get an error. blog entry was successfully added but an error appears&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;

07:23:40,954 ERROR [service.http.BlogsEntryServiceSoap] java.lang.NullPointerException
java.lang.NullPointerException
        at com.liferay.portlet.tags.service.impl.TagsAssetLocalServiceImpl.updateAsset(TagsAssetLocalServiceImpl.java:153)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy96.updateAsset(Unknown Source)
        at com.liferay.portlet.tags.service.TagsAssetLocalServiceUtil.updateAsset(TagsAssetLocalServiceUtil.java:132)
        at com.liferay.portlet.blogs.service.impl.BlogsEntryLocalServiceImpl.addEntry(BlogsEntryLocalServiceImpl.java:162)
        at com.liferay.portlet.blogs.service.impl.BlogsEntryLocalServiceImpl.addEntry(BlogsEntryLocalServiceImpl.java:101)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy91.addEntry(Unknown Source)
        at com.liferay.portlet.blogs.service.BlogsEntryLocalServiceUtil.addEntry(BlogsEntryLocalServiceUtil.java:95)
        at com.liferay.portlet.blogs.service.impl.BlogsEntryServiceImpl.addEntry(BlogsEntryServiceImpl.java:100)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy47.addEntry(Unknown Source)
        at com.liferay.portlet.blogs.service.BlogsEntryServiceUtil.addEntry(BlogsEntryServiceUtil.java:79)
        at com.liferay.portlet.blogs.service.http.BlogsEntryServiceSoap.addEntry(BlogsEntryServiceSoap.java:110)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at com.liferay.portal.servlet.AxisServlet.service(AxisServlet.java:74)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.service(PortalClassLoaderServlet.java:88)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at com.liferay.filters.secure.SecureFilter.doFilter(SecureFilter.java:144)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:80)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
        at java.lang.Thread.run(Thread.java:595)
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: java.rmi.RemoteException
 faultActor:
 faultNode:
 faultDetail:
        {http://xml.apache.org/axis/}hostname:my.liferay.com

java.rmi.RemoteException
        at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
        at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
        at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
        at javax.xml.parsers.SAXParser.parse(Unknown Source)
        at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
        at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
        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.liferay.client.portlet.blogs.service.http.Portlet_Blogs_BlogsEntryServiceSoapBindingStub.addEntry(Portlet_Blogs_BlogsEntryServiceSoapBindingStub.java:332)
        at org.test.ProcessEntry.processRequest(ProcessEntry.java:102)
        at org.test.ProcessEntry.doPost(ProcessEntry.java:190)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
        at java.lang.Thread.run(Thread.java:595)


&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;and also when I create a new user I'm getting this&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;

07:22:57,805 ERROR [kernel.util.MethodInvoker] Cannot invoke com.liferay.mail.util.DummyHook addUser on position 3 because it is null
07:22:57,806 ERROR [service.jms.MailConsumer] java.lang.NullPointerException
java.lang.NullPointerException
        at com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:72)
        at com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:47)
        at com.liferay.mail.service.jms.MailConsumer._onMessage(MailConsumer.java:117)
        at com.liferay.mail.service.jms.MailConsumer.onMessage(MailConsumer.java:85)
        at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:854)
        at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:99)
        at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:166)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:117)
        at org.apache.activemq.thread.PooledTaskRunner.access$100(PooledTaskRunner.java:26)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:44)
        at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)


&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;thanks in advance,&lt;br&gt;stel&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Stella Sjel</dc:creator>
    <dc:date>2007-08-28T07:47:18Z</dc:date>
  </entry>
  <entry>
    <title>RE: How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102787" />
    <author>
      <name>Stella Sjel</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102787</id>
    <updated>2007-08-28T06:29:28Z</updated>
    <published>2007-08-28T06:29:28Z</published>
    <summary type="html">hello all,&lt;br /&gt;&lt;br /&gt;question,&lt;br /&gt;why when i create user via soap, it does not create new row in the Layout table for the newly created user?&lt;br /&gt;&lt;br /&gt;many thanks,&lt;br /&gt;stel</summary>
    <dc:creator>Stella Sjel</dc:creator>
    <dc:date>2007-08-28T06:29:28Z</dc:date>
  </entry>
  <entry>
    <title>RE: How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102785" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102785</id>
    <updated>2007-08-24T17:35:55Z</updated>
    <published>2007-08-24T17:35:55Z</published>
    <summary type="html">&lt;div class="quote-title"&gt;Mani Kandan:&lt;/div&gt;&lt;blockquote&gt;I have installed Liferay 4.3 and i need to create the Virtual Host for the Public and Private Host, how to do this.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I think you posted to the wrong thread - this one is about making remote calls.&lt;br /&gt;&lt;br /&gt;In any event - for you question, &lt;a href="http://wiki.liferay.com/index.php/Liferay_Virtual_Hosting_Through_Communities"&gt;see this page&lt;/a&gt; in the wiki.</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-08-24T17:35:55Z</dc:date>
  </entry>
  <entry>
    <title>How to configure Public and Private Virtual Host in Liferay 4.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102781" />
    <author>
      <name />
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102781</id>
    <updated>2007-08-24T15:19:30Z</updated>
    <published>2007-08-24T15:19:30Z</published>
    <summary type="html">Hi ,&lt;br /&gt;&lt;br /&gt;I have installed Liferay 4.3 and i need to create the Virtual Host for the Public and Private Host, how to do this.&lt;br /&gt;&lt;br /&gt;I have created a friendly url as /mani, and it working fine if i give the link as&lt;br /&gt;&lt;br /&gt;http://manikandan:8089/web/mani,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;but i need to change the server name given part (http://manikandan:8089/web) to be mapped to some other URL like www.mani.com/mani&lt;br /&gt;&lt;br /&gt;is this possible in liferay, if it is possible please guide me how to do the Public and Private Virtual Hosting in Liferay 4.3&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;Manikandan.K</summary>
    <dc:creator />
    <dc:date>2007-08-24T15:19:30Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102777" />
    <author>
      <name>Igor Kravinski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102777</id>
    <updated>2007-08-01T09:16:45Z</updated>
    <published>2007-08-01T09:16:45Z</published>
    <summary type="html">&lt;div class="quote-title"&gt;Joel Kozikowski:&lt;/div&gt;&lt;blockquote&gt;If all you are looking for is to make a SOAP call to pre-existing Liferay services (i.e. the services defined in the core Liferay system), then I think all you need to do is write a stand alone program that uses the &lt;strong&gt;portal-client.jar&lt;/strong&gt; file referenced in my first post.  That jar file contains all the client stubs to call the core Liferay services.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I have a question regarding this &lt;br /&gt;&lt;a href="http://www.liferay.com/web/guest/community/forums/message_boards/message/123881"&gt;http://www.liferay.com/web/guest/community/forums/message_boards/message/123881&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;hope someone can help.&lt;br /&gt;Thanks</summary>
    <dc:creator>Igor Kravinski</dc:creator>
    <dc:date>2007-08-01T09:16:45Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102775" />
    <author>
      <name>David Brown</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102775</id>
    <updated>2007-05-07T04:42:12Z</updated>
    <published>2007-05-07T04:42:12Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hey Joel,&lt;br&gt;&lt;br&gt;If you want to get your own SOAP calls working you can make a quick mod to the ant build scripts:&lt;br&gt;&lt;br&gt;1) In ext-ejb/build-parent.xml add the following lines to extract the server-config.wsdd from tunnel-web.war just before you do the build-wsdd:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;unwar src="../ext-ear/modules/tunnel-web.war" dest="tmp-tunnel-web" /&amp;gt;
&amp;lt;copy file="tmp-tunnel-web/WEB-INF/server-config.wsdd" todir="../ext-web/docroot/WEB-INF" overwrite="true" /&amp;gt;
&amp;lt;delete dir="tmp-tunnel-web" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;Your service definitions will then be added to the existing Liferay definitions when you invoke build-wsdd.&lt;br&gt;&lt;br&gt;2) In ext-ear/build-parent.xml add the following line to copy the updated server-comfig.wsdd to the deploy directory just after the deploy-war for tunnel-web:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;copy file="../ext-web/docroot/WEB-INF/server-config.wsdd" todir="${app.server.deploy.dir}/tunnel-web/WEB-INF" overwrite="true" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;That way tunnel-web deploys the Liferay version and you over-write it with your updated version.&lt;br&gt;&lt;br&gt;I've created a service.xml for each of my portlets that require custom db access and some that have no db access - just soap/http calls.&lt;br&gt;&lt;br&gt;...Dave&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>David Brown</dc:creator>
    <dc:date>2007-05-07T04:42:12Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102773" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102773</id>
    <updated>2007-04-03T14:07:33Z</updated>
    <published>2007-04-03T14:07:33Z</published>
    <summary type="html">Another cross-reference to another thread re: Spring Remoting. I think we&amp;#39;ve finally got to the bottom of all the issues (this thread deals with permissions problems):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.liferay.com/web/guest/community/forums/message_boards/message/106916"&gt;http://www.liferay.com/web/guest/community/forums/message_boards/message/106916&lt;/a&gt;</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-04-03T14:07:33Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102771" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102771</id>
    <updated>2007-03-18T20:15:19Z</updated>
    <published>2007-03-18T20:15:19Z</published>
    <summary type="html">&lt;div class="quote-title"&gt;Joel Kozikowski:&lt;/div&gt;&lt;blockquote&gt;Finally, if you get some type of error re: there being no Hibernate session, note that it &lt;em&gt;appears&lt;/em&gt; that the wiring of the service objects puts the transaction manager in the &amp;#34;LocalServiceImpl&amp;#34; code, and not the &amp;#34;ServiceImpl&amp;#34; code.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A little more digging, and I now believe this behavior is a bug. See &lt;a href="http://support.liferay.com/browse/LEP-2408"&gt;LEP-2408&lt;/a&gt; for details.</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-03-18T20:15:19Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102769" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102769</id>
    <updated>2007-03-01T20:26:38Z</updated>
    <published>2007-03-01T20:26:38Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Leaving a few more breadcrumbs (as I've finally deployed my final code to my main server, and my client to a differnt remote machine):&lt;br&gt;&lt;br&gt;The &lt;strong&gt;/ext/ext-ejb/classes/portal-ext.properties&lt;/strong&gt; file needs to "allow" the IP address of the remote client so the calls will get through the security filter.  For Spring Remoting, the two settings of interest are:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;
spring.remoting.servlet.hosts.allowed
spring.remoting.servlet.https.required
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;There are similar "hosts.allowed" and "https.required" entries for SOAP, Tunneling, Burlap, etc.  See the &lt;strong&gt;/portal/portal-ejb/classes/portal.properties&lt;/strong&gt; file for more details.&lt;br&gt;&lt;br&gt;Finally, if you get some type of error re: there being no Hibernate session, note that it &lt;em&gt;appears&lt;/em&gt; that the wiring of the service objects puts the transaction manager in the "LocalServiceImpl" code, and not the "ServiceImpl" code.  What this means is that the transaction is not opened up (and thus no Hibernate Session is created) until you call the Local service.&lt;br&gt;&lt;br&gt;The design pattern, then, appears to be:&lt;br&gt;&lt;br&gt;1) Create your remote interface (to be called by your remote client), in your &lt;strong&gt;MyEntityServiceImpl&lt;/strong&gt; before running ServiceBuilder. That will expose the interface to the outside world.&lt;br&gt;&lt;br&gt;2) Have your &lt;em&gt;implementation&lt;/em&gt; of &lt;strong&gt;MyEntityServiceImpl&lt;/strong&gt; simply call a similar method you should create in your &lt;strong&gt;MyEntitty&lt;em&gt;Local&lt;/em&gt;ServiceImpl&lt;/strong&gt;.  Call that method using &lt;strong&gt;MyEntityLocalServiceUtil&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;I had some code in the implementation of &lt;strong&gt;MyEntityServiceImpl&lt;/strong&gt; that directly accessed the persisetnce layer (i.e. &lt;strong&gt;MyEntityUtil&lt;/strong&gt;), and that caused some issues once I really made the Spring Remote call (no transaction was active, and thus no Hibernate session). By moving that code to the "LocalService", it solved everything.  I traced somewhat through the Spring configuration files and noticed the transaction managers were set up there, so I guess that is how it has to be.&lt;br&gt;&lt;br&gt;Normally, the transaction is opened when invocation arrives at the remote service layer. In the past, I've used the "OpenSessionInView" Spring servlet filter to handle that. I tried that briefly, but got an error re: the Liferay WebAppContext not being a Spring WebAppContext (which is not true, so I think it was a class loader issue). In any event, I don't have time to mess with it, and it now works with the code in the "LocalService" layer, so I'll leave it at that!&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-03-01T20:26:38Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102765" />
    <author>
      <name>Jean-Charles FELICITE</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102765</id>
    <updated>2007-02-26T14:22:56Z</updated>
    <published>2007-02-26T14:22:56Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hi Max Max Max,&lt;br&gt;&lt;br&gt;The soap code is placed in the view.jsp page.&lt;br&gt;&lt;br&gt;Here it is :&lt;br&gt;&lt;pre&gt;&lt;code&gt;
&amp;amp;lt;%@ page import="com.liferay.client.portal.model.OrganizationSoap" %&amp;amp;gt;
&amp;amp;lt;%@ page import="com.liferay.client.portal.service.http.OrganizationServiceSoap" %&amp;amp;gt;
&amp;amp;lt;%@ page import="com.liferay.client.portal.service.http.OrganizationServiceSoapServiceLocator" %&amp;amp;gt;

&amp;amp;lt;%@ page import="java.net.URL" %&amp;amp;gt;

You belong to the following organizations:

&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;

&amp;amp;lt;%
OrganizationServiceSoapServiceLocator locator = new OrganizationServiceSoapServiceLocator();

OrganizationServiceSoap soap = locator.getPortal_OrganizationService(_getURL("Portal_OrganizationService"));

OrganizationSoap[] organizations = soap.getUserOrganizations(request.getRemoteUser());

for (int i = 0; i &amp;amp;lt; organizations.length; i++) {
	OrganizationSoap organization = organizations[i];
%&amp;amp;gt;

	&amp;amp;lt;%= organization.getName() %&amp;amp;gt;&amp;lt;br&amp;gt;

&amp;amp;lt;%
}
%&amp;amp;gt;

&amp;amp;lt;%!
private URL _getURL(String serviceName) throws Exception {

	// Unathenticated url

	String url = "http://localhost:8080/tunnel-web/axis/" + serviceName;

	// Authenticated url

	if (true) {
		String userId = "liferay.com.1";
		String password = "qUqP5cyxm6YcTAhz05Hph5gvu9M=";

		url = "http://" + userId + ":" + password + "@localhost:8080/tunnel-web/secure/axis/" + serviceName;
	}

	return new URL(url);
}
%&amp;amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;JC&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Jean-Charles FELICITE</dc:creator>
    <dc:date>2007-02-26T14:22:56Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102763" />
    <author>
      <name>Max H</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102763</id>
    <updated>2023-02-23T10:20:03Z</updated>
    <published>2007-02-23T21:23:58Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hi Michael,&lt;br&gt;&lt;br&gt;I took a peek at the sample-portal-client-portlet.war (for 4.2.1) and it contains only one java source file which appears to be just a few lines of skeleton portlet code and has no SOAP code in whatsoever.&lt;br&gt;&lt;br&gt;Please can you check it.&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;public class PortalClientPortlet extends GenericPortlet {

	public void doDispatch(RenderRequest req, RenderResponse res)
		throws IOException, PortletException {

		include("/view.jsp", req, res);
	}

	protected void include(String path, RenderRequest req, RenderResponse res)
		throws IOException, PortletException {

		PortletRequestDispatcher prd =
			getPortletContext().getRequestDispatcher(path);

		if (prd == null) {
			_log.error(path + " is not a valid include");
		}
		else {
			prd.include(req, res);
		}
	}

	private static Log _log = LogFactory.getLog(PortalClientPortlet.class);

}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;Thanks,&lt;br&gt;Max&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Max H</dc:creator>
    <dc:date>2007-02-23T21:23:58Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102761" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102761</id>
    <updated>2007-02-23T15:16:00Z</updated>
    <published>2007-02-23T15:16:00Z</published>
    <summary type="html">&lt;div class="quote-title"&gt;Joel Kozikowski:&lt;/div&gt;&lt;blockquote&gt;I&amp;#39;m trying to get something a little more &amp;#34;lightweight&amp;#34;.  I think my approach will be to use Spring Remoting - Http Invoker specifically, to call the Spring exposed versions of the Liferay code.  It looks like all of the server side code and definitions are in place. I&amp;#39;ll simply need to hand code the client side Spring definitions (which is fairly simple: Google for information re: Spring&amp;#39;s HttpInvokerProxyFactoryBean).&lt;/blockquote&gt;&lt;br /&gt;SUCCESS!&lt;br /&gt;&lt;br /&gt;I&amp;#39;m about to leave town on a biz trip, but I&amp;#39;m finally making service calls into my custom Portal services using Spring Remoting. I&amp;#39;ll write up a detailed WIKI entry later, but for those who need the info NOW, here are the key points:&lt;br /&gt;&lt;br /&gt;1) The Spring definitions for your custom services are created in the file &lt;strong&gt;remoting-servlet-ext.xml&lt;/strong&gt;. This file is automatically generated by ServiceBuilder, and is placed in the &lt;strong&gt;/ext/ext-web/docroot/WEB-INF&lt;/strong&gt; directory. This file, when deployed (in Tomcat at least) is INCORRECTLY placed in &lt;strong&gt;webapps/ROOT/WEB-INF&lt;/strong&gt;.  It SHOULD be placed in &lt;strong&gt;webapps/&lt;em&gt;tunnel-web&lt;/em&gt;/WEB-INF&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;2) Client side, create a bean definition using Spring&amp;#39;s &lt;strong&gt;HttpInvokerProxyFactoryBean&lt;/strong&gt; for your service interface. The URL you want to use is:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;http://www.myportal.com/tunnel-web/secure/spring/com_mycompany_MyCustomService-http&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The exact part that follows the &amp;#34;secure/spring&amp;#34; part is the same bean def found in your &lt;strong&gt;remoting-servlet-ext.xml&lt;/strong&gt; file.&lt;br /&gt;&lt;br /&gt;3) You need to use a custom HttpInvokerRequestExecutor for your Spring invoker - one that is capable of doing HTTP BASIC authentication. You can search the web (and/or Spring forums) on how to do Spring remoting using authentication, or you can wait for my Wiki entry (where I&amp;#39;ll post some code from an authenticating invoker I had written last year).&lt;br /&gt;&lt;br /&gt;4) The password you pass in needs to be the Liferay Encrypted password, and not the plain text password.  You can find that password by searching the User table in your lportal database.&lt;br /&gt;&lt;br /&gt;That&amp;#39;s all for now. Details will follow.</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-02-23T15:16:00Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102759" />
    <author>
      <name>Michael Young</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102759</id>
    <updated>2007-02-23T06:31:50Z</updated>
    <published>2007-02-23T06:31:50Z</published>
    <summary type="html">Joel,&lt;br /&gt;&lt;br /&gt;I would check out the sample-portal-client-portlet.war from our downloads. It contains an example of how to invoke our Web Services using SOAP.</summary>
    <dc:creator>Michael Young</dc:creator>
    <dc:date>2007-02-23T06:31:50Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102757" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102757</id>
    <updated>2007-02-22T19:00:40Z</updated>
    <published>2007-02-22T19:00:40Z</published>
    <summary type="html">There seem to be a couple of threads percolating re: remote access to services. I just wanted to cross reference them in case someone stumbles across one or the other:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.liferay.com/web/guest/community/forums/message_boards/message/103368"&gt;http://www.liferay.com/web/guest/community/forums/message_boards/message/103368&lt;/a&gt;</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-02-22T19:00:40Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102755" />
    <author>
      <name>Felipe Grajales</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102755</id>
    <updated>2007-02-22T14:14:45Z</updated>
    <published>2007-02-22T14:14:45Z</published>
    <summary type="html">Hi Joel,&lt;br /&gt;&lt;br /&gt;time to time people contact us to develop portlets and portal content. &lt;br /&gt;Right now we are looking for people with expertise in liferay&lt;br /&gt;are you interested? If so please answer these questions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;1. Where are you from?&lt;br /&gt;2. How much time have you been developing with liferay ?&lt;br /&gt;3. What is your email address ?&lt;br /&gt;4. Have you developed hot deployable velocity themes ?&lt;br /&gt;5. Besides Java what other language do you know?&lt;br /&gt;6. Can you give us email addresses of other persons that might be interested ?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thank you&lt;br /&gt;&lt;br /&gt;Felipe</summary>
    <dc:creator>Felipe Grajales</dc:creator>
    <dc:date>2007-02-22T14:14:45Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102753" />
    <author>
      <name>Joel Kozikowski</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102753</id>
    <updated>2007-02-22T00:23:33Z</updated>
    <published>2007-02-22T00:23:33Z</published>
    <summary type="html">&lt;div class="quote-title"&gt;Ivano Carrara:&lt;/div&gt;&lt;blockquote&gt;My intention was to ask you if you can do some work for me relating to the use of Liferay client.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, I&amp;#39;m not available to do work for others - I&amp;#39;ve got enough work of my own to last me until about 2012!&lt;br /&gt;&lt;br /&gt;I&amp;#39;d contact Liferay, Inc. That is what they are there for (its their business afterall), and they know a LOT more about the code than I do.</summary>
    <dc:creator>Joel Kozikowski</dc:creator>
    <dc:date>2007-02-22T00:23:33Z</dc:date>
  </entry>
  <entry>
    <title>RE: Remote calls to Services from external apps (via Soap, Tunneling, etc.)</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102751" />
    <author>
      <name>Ivano Carrara</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=102751</id>
    <updated>2007-02-21T19:40:32Z</updated>
    <published>2007-02-21T19:40:32Z</published>
    <summary type="html">Dear Joel,  thank you for your fast and gentle reply.&lt;br /&gt;&lt;br /&gt;My intention was to ask you if you can do some work for me relating to the use of Liferay client.&lt;br /&gt;&lt;br /&gt;So, if you can speak about the above I&amp;#39;ll appreciate it.&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Ivano C.</summary>
    <dc:creator>Ivano Carrara</dc:creator>
    <dc:date>2007-02-21T19:40:32Z</dc:date>
  </entry>
</feed>
