Forums

Home » Liferay Portal » English » 3. Development »

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Julien M
How to properly register a new webservice
April 2, 2008 7:49 AM
Answer

Julien M

Rank: New Member

Posts: 21

Join Date: March 31, 2008

Recent Posts

This thread is the continuation of an old one located in the Legacy forum : How to Expose and Consume a Method

I've been trying to expose a method like stated in this wiki :
http://wiki.liferay.com/index.php/How_to_Expose_and_Consume_a_Method

Problem:

Everything goes fine until step number 4 of the wiki :
4. ant clean deploy and you are done exposing a method. Check it out at /tunnel-web/secure/axis. emoticon


emoticon When I go to "/tunnel-web/axis" I can't find my service listed with the others.

(As my new service is not listed in "/tunnel-web/axis", the ext-client.jar creation can't be done properly)

Information about what I've done so far:

After step 3 of the wiki :
3. "ant build-wsdd" in ext-impl/ to generate /ext-web/docroot/WEB-INF/server-config.wsdd for SOAP calls


I indeed have "server-config.wsdd" in directory "ext\ext-web\docroot\WEB-INF" updated with the following xml code :


<service name="Portlet_LoadArticles_LoadArticlesService" provider="java:RPC" style="rpc" use="encoded">
    <parameter name="wsdlTargetNamespace" value="urn:http.service.LoadArticles.portlet.ext.com"/>
    <parameter name="wsdlServiceElement" value="LoadArticlesServiceSoapService"/>
    <parameter name="wsdlServicePort" value="Portlet_LoadArticles_LoadArticlesService"/>
    <parameter name="className" value="com.ext.portlet.LoadArticles.service.http.LoadArticlesServiceSoap"/>
        <parameter name="wsdlPortType" value="LoadArticlesServiceSoap"/>
    <parameter name="typeMappingVersion" value="1.2"/>
    <operation xmlns:operNS="urn:http.service.LoadArticles.portlet.ext.com" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
        name="loadArticle" qname="operNS:LoadArticle" returnQName="LoadArticleReturn" returnType="rtns:string" soapAction=""> </operation>
    <parameter name="allowedMethods" value="loadArticle"/>
</service>


After step 4, I looked inside the "WEB-INF\lib\ext-impl.jar" jar of my tomcat directory.
Everything seems to be ok here because there is all the .class files needed in "com\ext\portlet\LoadArticles\service\".

emoticon However, I looked in the file "tunnel-web\WEB-INF\server-config.wsdd" of my tomcat directory and the previous xml code defining my service has not been added with the other services

This is the reason why it doesn't appear in "\tunnel-web\axis".
If I try to add it myself I get this error when I access "/tunnel-web/axis":

And now... Some Services
AXIS error

Sorry, something seems to have gone wrong... here are the details:

Exception - org.apache.axis.InternalException: java.lang.Exception:
Couldn't find a matching Java operation for WSDD operation "loadArticle" (0 args)


Anyone to help me ?

If needed, here is my "service.xml" file defining the new service :
<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 4.3.3//EN" "http://www.liferay.com/dtd/liferay-service-builder_4_3_3.dtd">

<service-builder package-path="com.ext.portlet.LoadArticles">
<namespace>LoadArticles</namespace>
<entity name="LoadArticles" local-service="false" remote-service="true">
</entity>

</service-builder>


And my "LoadArticlesServiceImpl.java" file located in "ext\ext-impl\src\com\ext\portlet\LoadArticles\service\impl" :
package com.ext.portlet.LoadArticles.service.impl;
import com.ext.portlet.LoadArticles.service.LoadArticlesService;
import com.liferay.portal.service.impl.PrincipalBean;

public class LoadArticlesServiceImpl extends PrincipalBean
implements LoadArticlesService {

public String LoadArticle () {
return "Test";
}
}
Bruno Farache
RE: How to properly register a new webservice
April 2, 2008 8:05 AM
Answer

Bruno Farache

LIFERAY STAFF

Rank: Expert

Posts: 381

Join Date: May 14, 2007

Recent Posts

Maybe this is happening because your method has a capitalized L (LoadArticle) and the operation name in the xml is loadArticle.
Julien M
RE: How to properly register a new webservice
April 3, 2008 1:53 AM
Answer

Julien M

Rank: New Member

Posts: 21

Join Date: March 31, 2008

Recent Posts

Arg, thanks for that, It works now.
Joshua Shaffner
RE: How to properly register a new webservice
April 23, 2008 9:33 AM
Answer

Joshua Shaffner

Rank: Junior Member

Posts: 34

Join Date: December 13, 2004

Recent Posts

@Bruno, good catch!

@Julien, glad it works!
george konou
RE: How to properly register a new webservice
December 17, 2008 9:11 AM
Answer

george konou

Rank: New Member

Posts: 1

Join Date: December 11, 2008

Recent Posts

Hi all,

I followed the described procedure and I get an error at the first ant build-service.

E:\work\java\innportal\liferay-ext\ext-impl>ant build-service
Buildfile: build.xml

build-service:
     [java] Loading jar:file:/E:/work/java/innportal/liferay-ext/modules/portal-impl.jar!/system.properties
     [java] Loading file:/E:/work/java/innportal/liferay-ext/ext-impl/classes/system-ext.properties
     [java] Loading jar:file:/E:/work/java/innportal/liferay-ext/modules/portal-impl.jar!/portal.properties
     [java] Loading file:/E:/work/java/innportal/liferay-ext/ext-impl/classes/portal-ext.properties
     [java] Loading jar:file:/E:/work/java/innportal/liferay-ext/modules/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.propertie
s
     [java] 17:04:11,031 INFO  [PortalImpl:228] Portal lib directory /E:/work/java/innportal/liferay-ext/lib/portal/util-java.jar!/
     [java] Building ExtranetUser
     [java] Writing ..\ext-service\src\com\liferay\portal\service\service\ExtranetUserService.java
     [java] Writing ..\ext-service\src\com\liferay\portal\service\service\ExtranetUserServiceUtil.java
     [java] Writing src\com\liferay\portal\service\service\http\ExtranetUserServiceHttp.java
     [java] Writing src\com\liferay\portal\service\service\http\ExtranetUserServiceJSON.java
     [java] Writing src\com\liferay\portal\service\service\http\ExtranetUserServiceSoap.java
     [java] java.lang.ArrayIndexOutOfBoundsException: -1
     [java]     at java.util.ArrayList.get(ArrayList.java:324)
     [java]     at com.liferay.portal.tools.servicebuilder.ServiceBuilder.getEntity(ServiceBuilder.java:1071)
     [java]     at com.liferay.portal.tools.servicebuilder.ServiceBuilder.getEntity(ServiceBuilder.java:1111)
     [java]     at com.liferay.portal.tools.servicebuilder.ServiceBuilder._createRemotingXml(ServiceBuilder.java:2124)
     [java]     at com.liferay.portal.tools.servicebuilder.ServiceBuilder.<init>(ServiceBuilder.java:971)
     [java]     at com.liferay.portal.tools.servicebuilder.ServiceBuilder.<init>(ServiceBuilder.java:390)
     [java]     at com.liferay.portal.tools.servicebuilder.ServiceBuilder.main(ServiceBuilder.java:157)

compile:
    [javac] Compiling 2 source files to E:\work\java\innportal\liferay-ext\ext-service\classes


My service.xml is:

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 5.1.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_5_1_0.dtd">

<service-builder package-path="com.liferay.portal.service">
    <namespace>Extranet</namespace>
    <entity name="ExtranetUser" local-service="false" remote-service="true"></entity>
</service-builder>


Despite the ant exception i continued the procedure and finally the web service did not appear in the corresponding web page.

Im using Java 1.6.X if that matters.

Anyone has any clue for that?

Thanks in advance
New2 Liferay
RE: How to properly register a new webservice
August 20, 2009 6:11 AM
Answer

New2 Liferay

Rank: New Member

Posts: 23

Join Date: May 20, 2009

Recent Posts

Hi All

I want to deploy one of my classes as a webservice.
This class is part of a webapplication other than root.
For ex: ABCService is present in xyz web appliaction within liferay+tomcat.

Do I still need to have ext environment and modify serice.xml and generate server-config.wsdd and wsdl file?

Can I have these files within my own web application? Will liferay understand them?

Please help