Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

Ravindra Singareddy

Hi All,

We are migrating from Syncope 2.0.3 to 2.0.6. While authentication credentials, receiving following error.

What are we missing in elastic search configuration?

Thanks

 

Ravi

 

 

 

03:14:29,929 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 96201ms - Started 1149 of 1403 services (416 services are lazy, passive or on-demand)

03:14:58,744 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /syncope/rest/accessTokens/login: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]]

        at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)

        at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)

        at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)

        at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)

        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)

        at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)

        at org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO.doSearch(ElasticsearchAnySearchDAO.java:189)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:358)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:134)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:127)

Reply | Threaded
Open this post in threaded view
|

Re: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

ilgrosso
Administrator
On 2017-10-28 09:20 Ravindra Singareddy wrote:

> Hi All,
>
> We are migrating from Syncope 2.0.3 to 2.0.6. While authentication
> credentials, receiving following error.
>
> What are we missing in elastic search configuration?

Hi Ravi,
I hope you've been following [1][2][3] for your migration.

Regarding the Elasticsearch extension, either do not include it (if you
don't need it), e.g. remove

<dependency>
   <groupId>org.apache.syncope.ext.elasticsearch</groupId>
   <artifactId>syncope-ext-elasticsearch-provisioning-java</artifactId>
   <version>${syncope.version}</version>
</dependency>
<dependency>
   <groupId>org.apache.syncope.ext.elasticsearch</groupId>
   <artifactId>syncope-ext-elasticsearch-persistence-jpa</artifactId>
   <version>${syncope.version}</version>
</dependency>

from your own core/pom.xml, or be sure to follow the instructions to
enable it properly [4].

 From you error below:

> NoNodeAvailableException[None of the configured nodes are available:
> [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]

it seems that you haven't correctly configured your own

core/src/main/resources/elasticsearchClientContext.xml

HTH
Regards.

[1]
https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade+from+2.0.3+to+2.0.4
[2]
https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade+from+2.0.4+to+2.0.5
[3]
https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade+from+2.0.5+to+2.0.6
[4]
https://syncope.apache.org/docs/reference-guide.html#enable-the-a-href-elasticsearch-elasticsearch-a-extension

> 03:14:29,929 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025:
> WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 96201ms
> - Started 1149 of 1403 services (416 services are lazy, passive or
> on-demand)
>
> 03:14:58,744 ERROR [io.undertow.request] (default task-1) UT005023:
> Exception handling request to /syncope/rest/accessTokens/login:
> NoNodeAvailableException[None of the configured nodes are available:
> [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]]
>
> at
> org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
>
> at
> org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
>
> at
> org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
>
> at
> org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)
>
> at
> org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)
>
> at
> org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)
>
> at
> org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)
>
> at
> org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO.doSearch(ElasticsearchAnySearchDAO.java:189)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:358)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:134)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:127)
--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/
Reply | Threaded
Open this post in threaded view
|

RE: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

Ravindra Singareddy

Hi Francesco,

I am able to resolve elastic search issue. I am trying to do simple user registration with RESTFUL API but receiving following socket error.

Any Idea?

Thanks

 

Ravi

 

Address: http://localhost:8080/syncope/rest/users?storePassword=true

Http-Method: POST

Content-Type: application/xml

Headers: {X-Syncope-Domain=[Master], Authorization=[Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIwZGRkOWE3NS0wOThhLTQxMjEtOWQ5YS03NTA5OGFiMTIxYTAiLCJzdWIiOiJhZG1pbiIsImlhdCI6MTUwOTI2MTczMSwiaXNzIjoiQXBhY2hlU3luY29wZSIsImV4cCI6MTUwOTI2ODkzMSwibmJmIjoxNTA5MjYxNzMxfQ.miAhmbkTto1sXPdM4GK2E-Hx5D_cQBACAevEdkD6iNPAaycwsq3XFbZst3_5vYIJ2hp7JsnXgEVAA0ZWHtt0Cw], Content-Type=[application/xml], Accept=[application/xml], Accept-Encoding=[gzip;q=1.0, identity; q=0.5, *;q=0]}

--------------------------------------

04:00:01,625 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (default task-12) /register/register.xhtml @131,32 actionListener="#{userRegisterView.register}": javax.ws.rs.ProcessingException: java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/syncope/rest/users?storePassword=true: Read timed out: javax.el.ELException: /register/register.xhtml @131,32 actionListener="#{guestUserRegisterView.register}": javax.ws.rs.ProcessingException: java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/syncope/rest/users?storePassword=true: Read timed out

        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)

        at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)

        at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)

        at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)

        at javax.faces.component.UICommand.broadcast(UICommand.java:300)

        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

 

 

Caused by: javax.ws.rs.ProcessingException: java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/syncope/rest/users?storePassword=true: Read timed out

        at org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:608)

        at org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:584)

        at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:783)

        at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:235)

        at com.sun.proxy.$Proxy120.create(Unknown Source)

 

Sent from Mail for Windows 10

 


From: Francesco Chicchiriccò <[hidden email]>
Sent: Sunday, October 29, 2017 3:03:09 AM
To: [hidden email]
Subject: Re: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search
 
On 2017-10-28 09:20 Ravindra Singareddy wrote:

> Hi All,
>
> We are migrating from Syncope 2.0.3 to 2.0.6. While authentication
> credentials, receiving following error.
>
> What are we missing in elastic search configuration?

Hi Ravi,
I hope you've been following [1][2][3] for your migration.

Regarding the Elasticsearch extension, either do not include it (if you
don't need it), e.g. remove

<dependency>
   <groupId>org.apache.syncope.ext.elasticsearch</groupId>
   <artifactId>syncope-ext-elasticsearch-provisioning-java</artifactId>
   <version>${syncope.version}</version>
</dependency>
<dependency>
   <groupId>org.apache.syncope.ext.elasticsearch</groupId>
   <artifactId>syncope-ext-elasticsearch-persistence-jpa</artifactId>
   <version>${syncope.version}</version>
</dependency>

from your own core/pom.xml, or be sure to follow the instructions to
enable it properly [4].

 From you error below:

> NoNodeAvailableException[None of the configured nodes are available:
> [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]

it seems that you haven't correctly configured your own

core/src/main/resources/elasticsearchClientContext.xml

HTH
Regards.

[1]
<a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade&#43;from&#43;2.0.3&#43;to&#43;2.0.4">https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade+from+2.0.3+to+2.0.4
[2]
<a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade&#43;from&#43;2.0.4&#43;to&#43;2.0.5">https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade+from+2.0.4+to+2.0.5
[3]
<a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade&#43;from&#43;2.0.5&#43;to&#43;2.0.6">https://cwiki.apache.org/confluence/display/SYNCOPE/Upgrade+from+2.0.5+to+2.0.6
[4]
https://syncope.apache.org/docs/reference-guide.html#enable-the-a-href-elasticsearch-elasticsearch-a-extension

> 03:14:29,929 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025:
> WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 96201ms
> - Started 1149 of 1403 services (416 services are lazy, passive or
> on-demand)
>
> 03:14:58,744 ERROR [io.undertow.request] (default task-1) UT005023:
> Exception handling request to /syncope/rest/accessTokens/login:
> NoNodeAvailableException[None of the configured nodes are available:
> [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]]
>
> at
> org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
>
> at
> org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
>
> at
> org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
>
> at
> org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)
>
> at
> org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)
>
> at
> org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)
>
> at
> org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)
>
> at
> org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO.doSearch(ElasticsearchAnySearchDAO.java:189)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:358)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:134)
>
> at
> org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:127)
--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/
Reply | Threaded
Open this post in threaded view
|

RE: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

Ravindra Singareddy
In reply to this post by Ravindra Singareddy

Hi Francesco,

I have logged into Syncope-console and tried to change default password.cipher.algorithm from SHA1 to any other algorithms, throwing SocketTimeOutException. Any suggestion to resolve this issue?

Thanks a lot

 

Ravi

____________________________________________________________________________________________________________

 

java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/syncope/rest/configurations/password.cipher.algorithm: Read timed out

 


From: Ravindra Singareddy
Sent: Saturday, October 28, 2017 3:20:56 AM
To: [hidden email]
Subject: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search
 

Hi All,

We are migrating from Syncope 2.0.3 to 2.0.6. While authentication credentials, receiving following error.

What are we missing in elastic search configuration?

Thanks

 

Ravi

 

 

 

03:14:29,929 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 96201ms - Started 1149 of 1403 services (416 services are lazy, passive or on-demand)

03:14:58,744 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /syncope/rest/accessTokens/login: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]]

        at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)

        at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)

        at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)

        at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)

        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)

        at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)

        at org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO.doSearch(ElasticsearchAnySearchDAO.java:189)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:358)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:134)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:127)

Reply | Threaded
Open this post in threaded view
|

RE: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

Ravindra Singareddy

All good. Problem with mixing code base. Thanks Francesco for your help.

 

  • Ravi

 


From: Ravindra Singareddy <[hidden email]>
Sent: Sunday, October 29, 2017 11:09:53 PM
To: [hidden email]
Subject: RE: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search
 

Hi Francesco,

I have logged into Syncope-console and tried to change default password.cipher.algorithm from SHA1 to any other algorithms, throwing SocketTimeOutException. Any suggestion to resolve this issue?

Thanks a lot

 

Ravi

____________________________________________________________________________________________________________

 

java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/syncope/rest/configurations/password.cipher.algorithm: Read timed out

 


From: Ravindra Singareddy
Sent: Saturday, October 28, 2017 3:20:56 AM
To: [hidden email]
Subject: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search
 

Hi All,

We are migrating from Syncope 2.0.3 to 2.0.6. While authentication credentials, receiving following error.

What are we missing in elastic search configuration?

Thanks

 

Ravi

 

 

 

03:14:29,929 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 96201ms - Started 1149 of 1403 services (416 services are lazy, passive or on-demand)

03:14:58,744 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /syncope/rest/accessTokens/login: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]]

        at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)

        at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)

        at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)

        at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)

        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)

        at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)

        at org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO.doSearch(ElasticsearchAnySearchDAO.java:189)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:358)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:134)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:127)

Reply | Threaded
Open this post in threaded view
|

Re: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search

ilgrosso
Administrator
On 30/10/2017 06:04, Ravindra Singareddy wrote:

All good. Problem with mixing code base. Thanks Francesco for your help.


Good to hear :-)
Regards.

From: Ravindra Singareddy [hidden email]
Sent: Sunday, October 29, 2017 11:09:53 PM
To: [hidden email]
Subject: RE: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search
 

Hi Francesco,

I have logged into Syncope-console and tried to change default password.cipher.algorithm from SHA1 to any other algorithms, throwing SocketTimeOutException. Any suggestion to resolve this issue?

Thanks a lot

 

Ravi

____________________________________________________________________________________________________________

 

java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/syncope/rest/configurations/password.cipher.algorithm: Read timed out

 


From: Ravindra Singareddy
Sent: Saturday, October 28, 2017 3:20:56 AM
To: [hidden email]
Subject: Migration from Syncope 2.0.3 to 2.0,6 - Elastic Search
 

Hi All,

We are migrating from Syncope 2.0.3 to 2.0.6. While authentication credentials, receiving following error.

What are we missing in elastic search configuration?

Thanks

 

Ravi

 

 

 

03:14:29,929 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) started in 96201ms - Started 1149 of 1403 services (416 services are lazy, passive or on-demand)

03:14:58,744 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /syncope/rest/accessTokens/login: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{cSLh0CvsStmG0DEicj7ekA}{localhost}{127.0.0.1:9300}]]

        at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)

        at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)

        at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)

        at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)

        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)

        at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)

        at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62)

        at org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO.doSearch(ElasticsearchAnySearchDAO.java:189)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:358)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:134)

        at org.apache.syncope.core.persistence.jpa.dao.AbstractAnySearchDAO.search(AbstractAnySearchDAO.java:127)

-- 
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/