In this article I will show how to make/build/implement a Java due to access to the informations recorded on the CRM system, I will show also how to implement a simple Java application capable to use that client in order to execute some basic operations such as: login, contact creation, data retrieval. SugarCRM system (SugarCRM Inc., 2004) exposes to external systems some interface services for data access that support SOAP and REST protocols (SugarCRM Inc., 2010). SugarCRM version taken as reference here is Community Edition 6.1 (SugarCRM Inc., 2010).
During this article we will see how to make a .NET client to access the information recorded on the CRM system and use the client as the basis for the realization of a simple application .NET C# that is able to perform a series of elementary operations as: login, create a new contact and retrieve data.
This document describes how to access a MySQL database from Ruby by using a SOA gateway to create web services from the MySQL tables. It discusses setting up MySQL, populating it with sample data, creating a ODBC connection, using the SOA gateway to generate WSDLs and web services from the MySQL tables, and then calling those web services from a Ruby script to retrieve and output customer first names from the database.
The document discusses how to create JMS applications using ActiveMQ and Spring. It provides code examples for configuring JMS connections and destinations, defining consumers using message listener containers, and implementing producers using templates. The examples demonstrate publishing stock price updates to topics. Configuring the various JMS components with Spring simplifies common tasks in messaging applications.
This document describes creating an open blog feature for a wiki application built with PHP. An open blog allows any user to publicly post and discuss topics. The tutorial will build out the necessary database table and basic blog features. It assumes the reader has completed the previous four tutorials in the series on building an interactive wiki with PHP.
This document summarizes a presentation about the road to EmberJS 2.0. It introduces EmberJS and some of its key concepts like MVC pattern and two-way data binding. It describes updates in EmberJS 2.0 like the new rendering engine Glimmer, shift to components, ES6 modules, and simplification of concepts. It also discusses tools like Ember CLI and Ember Data for building EmberJS applications.
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...Atlassian
This document provides summaries of 4 macros:
1. The "response-time" macro displays response time data from a specified page.
2. The "color-table" macro applies alternating row coloring to tables with the "confluenceTable" class.
3. The "watermark" macro adds a watermark image to the page with options to specify the image, repetition, and minimum height.
4. The "draft-watermark" macro inserts a "Draft" watermark image on the page by calling the "watermark" macro.
This document provides information about installing and configuring Drupal 8, including enabling PHP OPcache, installing Drupal, most useful Drupal modules, and exploring key aspects of a Drupal site such as nodes, taxonomy, users and roles, modules, themes, views, and more. It explains concepts like content types, paths, permissions and how Drupal stores and retrieves content from its database.
During this article we will see how to make a .NET client to access the information recorded on the CRM system and use the client as the basis for the realization of a simple application .NET C# that is able to perform a series of elementary operations as: login, create a new contact and retrieve data.
This document describes how to access a MySQL database from Ruby by using a SOA gateway to create web services from the MySQL tables. It discusses setting up MySQL, populating it with sample data, creating a ODBC connection, using the SOA gateway to generate WSDLs and web services from the MySQL tables, and then calling those web services from a Ruby script to retrieve and output customer first names from the database.
The document discusses how to create JMS applications using ActiveMQ and Spring. It provides code examples for configuring JMS connections and destinations, defining consumers using message listener containers, and implementing producers using templates. The examples demonstrate publishing stock price updates to topics. Configuring the various JMS components with Spring simplifies common tasks in messaging applications.
This document describes creating an open blog feature for a wiki application built with PHP. An open blog allows any user to publicly post and discuss topics. The tutorial will build out the necessary database table and basic blog features. It assumes the reader has completed the previous four tutorials in the series on building an interactive wiki with PHP.
This document summarizes a presentation about the road to EmberJS 2.0. It introduces EmberJS and some of its key concepts like MVC pattern and two-way data binding. It describes updates in EmberJS 2.0 like the new rendering engine Glimmer, shift to components, ES6 modules, and simplification of concepts. It also discusses tools like Ember CLI and Ember Data for building EmberJS applications.
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...Atlassian
This document provides summaries of 4 macros:
1. The "response-time" macro displays response time data from a specified page.
2. The "color-table" macro applies alternating row coloring to tables with the "confluenceTable" class.
3. The "watermark" macro adds a watermark image to the page with options to specify the image, repetition, and minimum height.
4. The "draft-watermark" macro inserts a "Draft" watermark image on the page by calling the "watermark" macro.
This document provides information about installing and configuring Drupal 8, including enabling PHP OPcache, installing Drupal, most useful Drupal modules, and exploring key aspects of a Drupal site such as nodes, taxonomy, users and roles, modules, themes, views, and more. It explains concepts like content types, paths, permissions and how Drupal stores and retrieves content from its database.
This document provides instructions for integrating the learning management system Moodle with the e-portfolio system Mahara. It describes how to enable single sign-on between the two systems and export content such as forum posts from Moodle to Mahara. The steps include enabling networking in both systems, adding each other as peers, configuring roles to allow user access, and enabling specific content types like forums to be exported from Moodle to Mahara portfolios. Troubleshooting tips are provided for issues with integration.
This document provides instructions on how to access a MySQL database from a Java application using a SOA Gateway as a web service. It describes setting up the required software components, including MySQL, Java, Apache Axis2, and the SOA Gateway. It then demonstrates creating web services from the MySQL tables using the SOA Gateway, generating Java classes from the WSDLs, and writing Java code to call the web services to perform simple queries and display the results in a graphical user interface. Examples of simple single query code and more complex code using Swing components are provided.
The document provides instructions on setting up a sample Spring web application using Struts, Spring, and Hibernate. It covers downloading necessary components, creating the project structure and Ant build file, writing a unit test for the persistence layer, configuring Hibernate and Spring, and creating the initial model class and mapping file. The goal is to lay the groundwork for a basic CRUD application to manage user data across the three tiers.
The document discusses various topics related to Enterprise JavaBeans (EJB) 3.2, including session beans, message-driven beans, and the EJB runtime context. It describes the different types of session beans and their usage, messaging concepts in EJB using Java Message Service (JMS), and how to access the EJB context and use dependency injection of managed resources.
C# and ASP.NET Code and Data-Access SecurityDarren Sim
This document discusses ASP.NET security topics including authentication, authorization, forms authentication, and SQL injection. It describes how ASP.NET handles authentication using forms authentication, Windows authentication, and authentication providers. It also covers authorization configuration and URL authorization. The document discusses ADO.NET and using DataAdapters, DataSets, and DataReaders to work with databases. It provides examples of transactions, executing commands, and using a DataGrid to display query results. It warns about the risk of SQL injection and describes how user input should be sanitized in queries to prevent this vulnerability.
The document discusses trends toward browser-based, client-side development and simpler yet more powerful products. It describes building a web-based document viewer using the Accusoft Pegasus ASP.NET Imaging SDK. The application allows searching a document library and viewing documents. Code examples show creating search and view pages, loading a document into the viewer, and JavaScript for viewer controls.
The document provides an introduction to using Servlets and JSPs to build dynamic web applications. It discusses the web application architecture and how requests are handled by the container. Servlets are Java classes that handle requests and responses, while JSPs simplify creating dynamic web pages by mixing HTML with Java code. The document outlines the servlet lifecycle and the differences between GET and POST requests. It also discusses how to retrieve and set request and response parameters, headers, and attributes to communicate between the client and server.
Apache ServiceMix is an open-source enterprise service bus (ESB) and service-oriented architecture (SOA) toolkit built on Java specifications. It uses a layered architecture based on OSGi, with a lightweight runtime called Karaf at the core. Above this are technologies like Apache Camel for integration patterns, Apache CXF for web services, and Apache ActiveMQ for messaging. ServiceMix allows building and deploying distributed integration solutions and acts as a shared messaging layer for connecting applications throughout an enterprise.
Server side programs can be written using different server-side technologies , such as Common Gateway Interface (CGI) , Active Server Pages (ASP) and Servlets.
CGI scripts are written in C , C++ or perl programming languages .
In case of an application server using CGI script to process client request , the server creates a separate instance of the CGI script to process the request.
As a result, the efficiency of the server is affected when there is large number of concurrent requests.
The document discusses how to use the SOAP component in Mule applications to publish, consume, and proxy SOAP web services. It provides an example of creating a SOAP web service for arithmetic operations using a .xsd schema file, generating Java files from a .wsdl file, implementing the service interface, and testing the service using SOAP UI. The SOAP component allows consuming and publishing SOAP web services within Mule flows.
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyJean-Sebastien Delfino
This document discusses developing composite applications for the cloud using Apache Tuscany. It provides an overview of cloud computing goals and challenges, and how the Service Component Architecture (SCA) aims to address these challenges. Specifically, SCA abstracts out technical APIs and protocols to allow focusing on business logic. Apache Tuscany is an open source SCA implementation that can help assemble, wire, and rewire components in the cloud. The document demonstrates rewiring components in a Tuscany application deployed to Amazon EC2.
A 60-minute tour of AWS Compute (November 2016)Julien SIMON
This document summarizes a 60-minute tour of AWS compute services, including Amazon EC2, Elastic Beanstalk, EC2 Container Service, and AWS Lambda. It provides an overview of each service, including its core capabilities and use cases. Examples and demos are shown for Elastic Beanstalk, EC2 Container Service, and AWS Lambda. Additional resources are referenced for going deeper with ECS and Lambda.
Developing SOAP Web Services using Java
Developing Web Services Using Apache Axis
Installing Axis for Web Services
Running Axis without Tomcat/Servlet Engine
Axis infrastructure and components
Axis Web services programming Model
The document discusses how to use the Mule SOAP component to create and consume a SOAP web service. It includes steps to generate an XSD and WSDL, create a Java service interface, implement the interface, and test the service using SOAP UI. The SOAP component allows publishing, consuming, and proxying SOAP services within a Mule flow.
This document provides an overview of how to build a full stack API with DevOps integration using Quarkus in under an hour. It discusses APIs in microservice architectures, Quarkus advantages over other frameworks, and includes demos on building the first Quarkus API, adding fault tolerance, observability, logging, persistence, and security. The agenda covers asynchronous and synchronous communication patterns, MicroProfile basics, Quarkus benefits like performance and container support, JAX-RS annotations, and using various Quarkus extensions for fault tolerance, OpenTelemetry, logging, databases, Hibernate ORM with Panache, and OAuth security.
My Slides about creating web sites which could also be useable even if you are not online! From Web Storages to Service Workers.
Presented at Mobiletech Conference in Munich March 2017
The document discusses two serverless computing platforms that support Swift - OpenWhisk and Fn.
OpenWhisk is an open source system that is event-driven, containerized, and allows chaining of actions. It is hosted on Bluemix but can be difficult to deploy elsewhere. Fn is container-native and deploys functions as containers communicating via standard input/output. Both allow simple Swift functions to be deployed and called remotely with REST APIs or command line tools. The document provides examples of writing, deploying and calling functions on each platform.
This document provides an introduction and overview of Apache Mesos. It begins by describing Mesos' origins at companies like Google and how it enables fine-grained resource sharing in data centers. It then discusses concepts like schedulers, executors, frameworks and how Mesos allows building distributed applications and data center infrastructure. The document also covers Mesos concepts such as resources, attributes, roles, constraints and how tools like Marathon interact with Mesos. Finally, it provides examples of Mesos frameworks for technologies like Kafka and Cassandra.
Single Sign-On for APEX applications based on Kerberos (Important: latest ver...Niels de Bruijn
This document provides instructions for setting up single sign-on (SSO) for Oracle Application Express (APEX) applications using Kerberos authentication. It describes:
1) Configuring an Apache web server with mod_auth_kerb on Linux to authenticate against a Windows Active Directory server without requiring additional credentials.
2) Configuring Tomcat, ORDS, and APEX to work with the Kerberos authentication.
3) Optional additional configurations for Windows with IIS or for verifying group membership.
This document provides instructions for integrating the learning management system Moodle with the e-portfolio system Mahara. It describes how to enable single sign-on between the two systems and export content such as forum posts from Moodle to Mahara. The steps include enabling networking in both systems, adding each other as peers, configuring roles to allow user access, and enabling specific content types like forums to be exported from Moodle to Mahara portfolios. Troubleshooting tips are provided for issues with integration.
This document provides instructions on how to access a MySQL database from a Java application using a SOA Gateway as a web service. It describes setting up the required software components, including MySQL, Java, Apache Axis2, and the SOA Gateway. It then demonstrates creating web services from the MySQL tables using the SOA Gateway, generating Java classes from the WSDLs, and writing Java code to call the web services to perform simple queries and display the results in a graphical user interface. Examples of simple single query code and more complex code using Swing components are provided.
The document provides instructions on setting up a sample Spring web application using Struts, Spring, and Hibernate. It covers downloading necessary components, creating the project structure and Ant build file, writing a unit test for the persistence layer, configuring Hibernate and Spring, and creating the initial model class and mapping file. The goal is to lay the groundwork for a basic CRUD application to manage user data across the three tiers.
The document discusses various topics related to Enterprise JavaBeans (EJB) 3.2, including session beans, message-driven beans, and the EJB runtime context. It describes the different types of session beans and their usage, messaging concepts in EJB using Java Message Service (JMS), and how to access the EJB context and use dependency injection of managed resources.
C# and ASP.NET Code and Data-Access SecurityDarren Sim
This document discusses ASP.NET security topics including authentication, authorization, forms authentication, and SQL injection. It describes how ASP.NET handles authentication using forms authentication, Windows authentication, and authentication providers. It also covers authorization configuration and URL authorization. The document discusses ADO.NET and using DataAdapters, DataSets, and DataReaders to work with databases. It provides examples of transactions, executing commands, and using a DataGrid to display query results. It warns about the risk of SQL injection and describes how user input should be sanitized in queries to prevent this vulnerability.
The document discusses trends toward browser-based, client-side development and simpler yet more powerful products. It describes building a web-based document viewer using the Accusoft Pegasus ASP.NET Imaging SDK. The application allows searching a document library and viewing documents. Code examples show creating search and view pages, loading a document into the viewer, and JavaScript for viewer controls.
The document provides an introduction to using Servlets and JSPs to build dynamic web applications. It discusses the web application architecture and how requests are handled by the container. Servlets are Java classes that handle requests and responses, while JSPs simplify creating dynamic web pages by mixing HTML with Java code. The document outlines the servlet lifecycle and the differences between GET and POST requests. It also discusses how to retrieve and set request and response parameters, headers, and attributes to communicate between the client and server.
Apache ServiceMix is an open-source enterprise service bus (ESB) and service-oriented architecture (SOA) toolkit built on Java specifications. It uses a layered architecture based on OSGi, with a lightweight runtime called Karaf at the core. Above this are technologies like Apache Camel for integration patterns, Apache CXF for web services, and Apache ActiveMQ for messaging. ServiceMix allows building and deploying distributed integration solutions and acts as a shared messaging layer for connecting applications throughout an enterprise.
Server side programs can be written using different server-side technologies , such as Common Gateway Interface (CGI) , Active Server Pages (ASP) and Servlets.
CGI scripts are written in C , C++ or perl programming languages .
In case of an application server using CGI script to process client request , the server creates a separate instance of the CGI script to process the request.
As a result, the efficiency of the server is affected when there is large number of concurrent requests.
The document discusses how to use the SOAP component in Mule applications to publish, consume, and proxy SOAP web services. It provides an example of creating a SOAP web service for arithmetic operations using a .xsd schema file, generating Java files from a .wsdl file, implementing the service interface, and testing the service using SOAP UI. The SOAP component allows consuming and publishing SOAP web services within Mule flows.
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyJean-Sebastien Delfino
This document discusses developing composite applications for the cloud using Apache Tuscany. It provides an overview of cloud computing goals and challenges, and how the Service Component Architecture (SCA) aims to address these challenges. Specifically, SCA abstracts out technical APIs and protocols to allow focusing on business logic. Apache Tuscany is an open source SCA implementation that can help assemble, wire, and rewire components in the cloud. The document demonstrates rewiring components in a Tuscany application deployed to Amazon EC2.
A 60-minute tour of AWS Compute (November 2016)Julien SIMON
This document summarizes a 60-minute tour of AWS compute services, including Amazon EC2, Elastic Beanstalk, EC2 Container Service, and AWS Lambda. It provides an overview of each service, including its core capabilities and use cases. Examples and demos are shown for Elastic Beanstalk, EC2 Container Service, and AWS Lambda. Additional resources are referenced for going deeper with ECS and Lambda.
Developing SOAP Web Services using Java
Developing Web Services Using Apache Axis
Installing Axis for Web Services
Running Axis without Tomcat/Servlet Engine
Axis infrastructure and components
Axis Web services programming Model
The document discusses how to use the Mule SOAP component to create and consume a SOAP web service. It includes steps to generate an XSD and WSDL, create a Java service interface, implement the interface, and test the service using SOAP UI. The SOAP component allows publishing, consuming, and proxying SOAP services within a Mule flow.
This document provides an overview of how to build a full stack API with DevOps integration using Quarkus in under an hour. It discusses APIs in microservice architectures, Quarkus advantages over other frameworks, and includes demos on building the first Quarkus API, adding fault tolerance, observability, logging, persistence, and security. The agenda covers asynchronous and synchronous communication patterns, MicroProfile basics, Quarkus benefits like performance and container support, JAX-RS annotations, and using various Quarkus extensions for fault tolerance, OpenTelemetry, logging, databases, Hibernate ORM with Panache, and OAuth security.
My Slides about creating web sites which could also be useable even if you are not online! From Web Storages to Service Workers.
Presented at Mobiletech Conference in Munich March 2017
The document discusses two serverless computing platforms that support Swift - OpenWhisk and Fn.
OpenWhisk is an open source system that is event-driven, containerized, and allows chaining of actions. It is hosted on Bluemix but can be difficult to deploy elsewhere. Fn is container-native and deploys functions as containers communicating via standard input/output. Both allow simple Swift functions to be deployed and called remotely with REST APIs or command line tools. The document provides examples of writing, deploying and calling functions on each platform.
This document provides an introduction and overview of Apache Mesos. It begins by describing Mesos' origins at companies like Google and how it enables fine-grained resource sharing in data centers. It then discusses concepts like schedulers, executors, frameworks and how Mesos allows building distributed applications and data center infrastructure. The document also covers Mesos concepts such as resources, attributes, roles, constraints and how tools like Marathon interact with Mesos. Finally, it provides examples of Mesos frameworks for technologies like Kafka and Cassandra.
Single Sign-On for APEX applications based on Kerberos (Important: latest ver...Niels de Bruijn
This document provides instructions for setting up single sign-on (SSO) for Oracle Application Express (APEX) applications using Kerberos authentication. It describes:
1) Configuring an Apache web server with mod_auth_kerb on Linux to authenticate against a Windows Active Directory server without requiring additional credentials.
2) Configuring Tomcat, ORDS, and APEX to work with the Kerberos authentication.
3) Optional additional configurations for Windows with IIS or for verifying group membership.
This document provides an overview and instructions for installing, configuring, and using the Apache web server. It covers downloading and installing Apache from source code or binaries, starting and stopping the server, adding modules, configuring log files, setting up virtual hosts, and other common Apache directives and tasks. The document is intended as a quick reference guide for Apache administration and configuration.
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングscalaconfjp
Xitrum is an asynchronous and clustered Scala web framework and HTTP server built on top of Netty and Akka. It is feature-rich, easy to use, and high performance. Xitrum can scale to a cluster of servers using Akka Cluster and Hazelcast. It is used in production systems in various countries. The document provides information on Xitrum's architecture, features, annotations, and examples of actions and SockJS messaging.
This document provides an overview of Xitrum, an asynchronous and clustered Scala web framework built on top of Netty and Akka. It describes what Xitrum is, why it should be used, how it works, examples of its features like actions, views, routing, authentication, and more. It also provides links to the Xitrum homepage, guides, community, and examples of where Xitrum is used in production.
The document provides information about the Apache HTTP Server software. It discusses that Apache is notable for playing a key role in the growth of the World Wide Web. It is the most popular web server software, serving over half of all websites. The document then covers Apache's features, uses, performance capabilities, and how to install and configure it in Linux.
This webinar covered various DevOps topics using AWS services like CloudFormation, OpsWorks, CloudWatch, and WorkSpaces. CloudFormation allows defining infrastructure as code and bootstrapping instances. OpsWorks manages the application lifecycle. CloudWatch provides monitoring and logging. WorkSpaces enables provisioning cloud-based desktops for developers. Questions from attendees were taken using the webinar interface.
Using schedulers like Marathon and Aurora help to get your applications scheduled and executing on Mesos. In many cases it makes sense to build a framework and integrate directly. This talk will breakdown what is involved in building a framework, how to-do this with examples and why you would want to-do this. Frameworks are not only for generally available software applications (like Kafka, HDFS, Spark ,etc) but can also be used for custom internal R&D built software applications too.
Accessibility Testing is one of the important types of testing that add value to your business and deliver user friendly applications. Axe Core is a very powerful framework that can help the team to build web products that are inclusive. In this article, different ways to test the Accessibility and the automation part have been discussed in full length. You can achieve Accessibility Testing with the help of the following methods/approaches
This is a presentation of the Amazon Web Service compatible EC2 interface to CloudStack. AWS EC2 is the de facto standard for compute clouds whether they are private or public. EC2 has a multiple client libraries and tools that can be used to provision virtual machine instances.
In this talk we walk through how to enable an EC2 like service in a CloudStack based cloud, how to register the users and how to use clients to talk to CloudStack the same way you would talk to the AWS EC2 public clouds.
Or: how to build a complete system from scratch.
It begins by the requirements to have an installation process
easy to repeat, documented and auditable.
Similar to How to Build a Java client for SugarCRM (20)
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Antonio Musarra
Vedremo come installare step-by-step TIBCO Jasper Reports Server 7.5 Community Edition su RedHat JBoss EAP 7.2, utilizzando CentOS 8.1 come sistema operativo e PostgreSQL come database server.
In questo tutorial vedremo come affrontare l'installazione di Jasper Reports Server senza l'ausilio dell'installer; questa è l'opzione solitamente adottata in ambiti enterprise.
I punti salienti di questo tutorial sono:
1. Quali sono i requisiti software
2. Quali sono i requisiti hardware
3. Download del software
4. Layout d’installazione
5. Installazione di OpenJDK 11
6. Installazione di PostgreSQL 10
7. Installazione di JBoss EAP 7.2.0
8. Configurazione & Installazione di Jasper Reports Server
9. Configurazione di JBoss EAP 7.2.0
10. Start di Jasper Reports Server
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cAntonio Musarra
Nel corso di questo tutorial, vedremo come installare Liferay Portal 7.2 GA2 Community Edition su WildFly 16 con il supporto verso Oracle Database 19c.
Il supporto per WildFly 16 è stato aggiunto da Liferay 7.1 (vedi Matrice di Compatibilità -https://www.liferay.com/documents/10182/246659966/Liferay+DXP+7.1+Compatibility+Matrix.pdf/c8805b72-c693-1f26-3f2d-731ffc301366).
Il supporto per Oracle Database 19c è disponibile dalla versione 7.0 di Liferay.
Il repository GitHub liferay-portal-72-wildfly-16 (https://github.com/amusarra/liferay-portal-72-wildfly-16) contiene il layout d'installazione e i file di configurazione di Liferay e WildFly.
Nel caso in cui non abbiate un'istanza Oracle Database 19c disponibile, potreste creare la vostra da zero, per questo v'invito a leggere l'articolo How to setup Docker container Oracle Database 19c for Liferay Development Environment (http://bit.ly/2UlwRBN).
Potete guardare il video tutorial direttamente dal mio canale YouTube https://youtu.be/u4tOg5sFulY
Non esitate al lasciare i vostri feedback su questo tutorial e vi aspetto sul mio blog Antonio Musarra's Blog (https://www.dontesta.it).
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Antonio Musarra
In questo eBook sarà affrontato un argomento legato alla sicurezza che riguarda il come rendere sicure le connessioni HTTP attraverso il protocollo SSL/TLS (da ora in avanti TLS). Questo aspetto di sicurezza non è strettamente legato a Liferay, infatti non esiste nessun riferimento sulla LDN, riguarda invece l’infrastruttura dove il portale Liferay è collocato.
Il percorso che seguiremo nel corso di questo eBook per raggiungere il nostro obiettivo, sarà così organizzato:
1. Gestione dei certificati
2. Configurazione del protocollo TLS
3. Configurazione del portale Liferay (sia Apache Tomcat sia WildFly)
Come integrare Salesforce.com nel contesto OSGi di Liferay 7. Nel corso di questa presentazione (tenuta al #LRUGItaly 2017 di Bologna) sarà illustrata una soluzione d'integrazione di Salesforce.com tramite le API SOAP nel contesto OSGi di Liferay (e non solo, vedi Apache Karaf).
Come installare Liferay 7 su JBOSS EAP con il supporto Oracle DatabaseAntonio Musarra
Nel corso di questa guida vedremo come installare Liferay 7 Community Edition su JBOSS EAP 6.4 con il supporto a Oracle Database. Chi di voi mi segue sul mio blog, saprà che subito dopo l’uscita della prima GA di Liferay 7 ho aggiunto il supporto per Oracle Database rimosso dalla Community Edition da Liferay.
1. Repository liferay-7-jboss-eap-home con la struttura e file di configurazione di Liferay e JBOSS EAP 6.4.0.GA -https://github.com/amusarra/liferay-7-jboss-eap-home
2. Liferay 7 Wildfly: How to add support for Oracle DB - Antonio Musarra’s Blog YouTube Channel - https://www.youtube.com/watch?v=7fojCjko7Ac
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
Non sapete come realizzare un client SOAP in OSGi Style su Liferay 7?La risposta è il framework Apache CXF installato a bundle e poi OSGi Service Pattern.
Allo User Group Italiano su Liferay di Bologna: Overview del futuro prossimo su Liferay.
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire applicazioni modulari a componenti (i Bundle) e che introduce una programmazione Service Oriented, permettendo una separazione tra interfaccia ed implementazione molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container) di OSGi, conformi alle specifiche.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
SugarCRM Enterprise Development Virtual ApplianceAntonio Musarra
In ambienti di tipo enterprise è ormai consuetudine consegnare “chiavi in mano” l’ambiente di sviluppo per il progetto al team di sviluppo. La standardizzazione degli ambienti di sviluppo e la produzione degli stessi tramite meccanismi d’automazione, aumenta l’affidabilità e sicurezza degli ambienti oltre che rendere più veloci i cicli di sviluppo e rilascio.
Nella fase di startup di un recente progetto ho dedicato la mia attenzione alla progettazione e realizzazione dell’architettura HA per SugarCRM. Una delle fasi del progetto prevedeva l’installazione di SugarCRM su un determinato stack software in linea con quanto indicato sul documento SugarCRM Supported Platforms, quest’operazione è stata “tradotta” poi con il build di una virtual appliance adatta a ospitare l’ambiente di sviluppo per SugarCRM 7.2 (nelle versioni commerciali attuali).
Nel corso di quest’articolo vedremo quindi le caratteristiche della virtual appliance realizzata per l’ambiente di sviluppo SugarCRM e come ottenere la stessa per importarla sul vostro ambiente virtualizzazione.
Nel corso di quest’articolo vedremo come sia possibile sfruttare il Service Builder (Liferay Inc., 2014) per creare dei servizi da esporre all’esterno non direttamente collegati all’entità gestiste dallo specifico plugin.
Quello che vogliamo ottenere è quindi un servizio personalizzato chiamato Custom Users Service disponibile pubblicamente e che sfrutti i servizi core del portale. In questo particolare scenario vogliamo fare in modo che il servizio Custom Users Service, esponga un metodo che ritorni al consumer del servizio, la lista di utenti taggati con un determinato tag (Liferay Inc., 2014).
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.Antonio Musarra
Questo corposo articolo illustra in modo pratico come utilizzare lo strumento Scheduler di SugarCRM per implementare un caso d'integrazione dove due sistemi (uno dei quali è SugarCRM) scambiano un flusso dati XML all’interno del quale viaggiano i dati degli accounts che devono essere aggiornati o inseriti sul sistema di CRM.
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
Realizzare un’applicazione (semplice) HTML 5 (costruita veramente in dieci minuti) che interagisca con il sistema SugarCRM sfruttando le API REST.
Con gli strumenti adeguati abbiamo avuto modo di costatare come in questi ultimi anni in particolare sia divenuto semplice e quasi immediato realizzare applicazioni web, che interagiscono con servizi prettamente di tipo REST per attingere ai dati. L’utilizzo di framework commisurati al progetto influisce positivamente sul risparmio di tempo necessario per l’implementazione, non considerando ovviamente il tempo necessario per l’apprendimento dell’uso dello strumento.
Liferay Web Services - Come importare utenti da un foglio ExcelAntonio Musarra
Nel corso di quest'articolo vedremo come sia semplice e immediato utilizzare i Web Services di Liferay per importare una lista di utenti da un foglio Excel.
L’articolo intende comunicare le informazioni base che riguardano gli hooks favorendo l’aspetto reale, in altre parole, far capire a cosa servono tramite l’esposizione e realizzazione di un caso di studio quanto più possibile vicino al reale. Sarà quindi presentato un caso d’integrazione che farà uso degli hooks, toccando i vari aspetti di personalizzazione. L’articolo sarà suddiviso in più episodi per evitare una “sbrodolata” d’informazione e rendere più efficace l’assimilazione di quanto esposto.
Esistono in giro soluzioni Open Source di ogni tipo che implementano Enterprise Service Bus (ESB), Liferay ha preferito non integrare al suo interno una delle soluzioni esistenti (il più delle volte pensanti) in favore di un proprio “piccolo message bus” che fosse in grado di far comunicare in modo semplificato i componenti del portale tramite lo scambio di messaggi. La versione 6.1 di Liferay ha migliorato di molto il Message Bus introducendo un più ricco insieme di service API che facilitano lo scambio dei messaggi tra le portlet e in generale tra i plugins.
Nel corso di queste poche righe vedremo quindi come sia possibile e semplice mettere SugarCRM proprio “dentro” Liferay. Ipotizzando uno scenario dove Liferay implementa un portale operativo da cui è possibile accedere a informazioni e procedure di un’ipotetica azienda, non sarebbe una cosa fuori dal comune, consentire l’accesso al CRM direttamente dal portale senza essere obbligati a dover aprire una nuova finestra del browser evitando anche la ripetizione dell’autenticazione.
In questo breve articolo vedremo come sia possibile e semplice utilizzare le API di Pentaho Data Integration (Kettle) per eseguire dei Job in precedenza progettati con il designer Spoon . Non sarà oggetto di trattazione dell’articolo la parte di design che riguarda sia le Trasformazioni sia i Job. L’articolo è rivolto a chi già possiede buone conoscenze di base dell’architettura e del funzionamento di Kettle.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
How to Build a Java client for SugarCRM
1. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
How
to
Build
a
Java
client
for
SugarCRM
In
this
article
I
will
show
how
to
make/build/implement
a
Java
due
to
access
to
the
informations
recorded
on
the
CRM
system,
I
will
show
also
how
to
implement
a
simple
Java
application
capable
to
use
that
client
in
order
to
execute
some
basic
operations
such
as:
login,
contact
creation,
data
retrieval.
SugarCRM
system
(SugarCRM Inc., 2004)
exposes
to
external
systems
some
interface
services
for
data
access
that
support
SOAP
and
REST
protocols
(SugarCRM Inc.,
2010).
SugarCRM
version
taken
as
reference
here
is
Community
Edition
6.1
(SugarCRM Inc., 2010).
The
protocol
considered
here
is
SOAP,
there
are
many
ways
to
create
a
SOAP
Java
client
able
to
communicate
with
a
web
service,
maybe
the
simplest
way
is
to
use
the
mature
Apache
Axis
framework
(The Apache Software
Foundation, 2011).
Apache
Axis
is
an
open
source
framework
implementing
a
SOAP
Engine,
useful
to
create,
publish
and
consume
Java-‐based
web
services
(moreover
it
supports
C/C++
too).
Apache
Axis
will
help
to
create
the
Service
SOAP
Stub
+
Data
Type
starting
from
the
WSDL
document
provided
by
SugarCRM.
These
are
the
steps
I
will
follow
to
reach
our
goal:
• Generate
the
Java
Stub
with
Apache
Axis;
• Compile
the
Java
Stub
as
a
Java
library
(jar);
• Create
the
Java
SugarCRMSOAPClient
project.
1. Generate
the
Java
Client
Before
proceeding
with
the
client
generation,
we
need
to
successfully
complete
the
following
steps:
• Download
Apache
Axis
from
http://ws.apache.org/axis/java/releases.html
.
We
need
to
download
version
1.4;
• Configure
Apache
Axis
framework.
The
configuration
of
Apache
Axis
consist
of
the
registration
in
your
environment
(both
Windows
and
Unix
/
Linux)
the
following
environment
variables:
• AXIS_HOME:
the
installation
directory
(e.g.:
/opt/axis,
c:axis)
• AXIS_LIB:
the
library
directory
(e.g.:
$AXIS_HOME/lib)
• AXISCLASSPATH:
Java
class
path
(e.g.:
$AXIS_LIB/axis.jar:$AXIS_LIB/commons-‐loggins.jar)
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
1
2. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
In
order
to
achieve
Apache
Axis
correctly
working,
we
need
to
verify
the
JAVA_HOME
environment
variable
setting;
this
one
represents
the
installation
directory
of
our
Java
Virtual
Machine.
In
the
Unix/Linux
environment
(similarly
to
Windows
systems)
we
need
to
configure
as
follows:
$ export AXIS_HOME="/opt/axis-1_4"
$ export AXIS_LIB="$AXIS_HOME/lib"
$ export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
$ AXISCLASSPATH=$AXIS_LIB/axis-ant.jar:$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery0.2.jar:$AXIS_LIB/commons-logging-1.0.4.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/log4j1.2.8.jar:$AXIS_LIB/saaj.jar:$AXIS_LIB/wsdl4j-1.5.1.jar:$AXIS_LIB/mail1.4.1.jar:$AXIS_LIB/activation.jar
$ export AXISCLASSPATH="$AXIS_HOME":"$JAVA_HOME/lib/tools.jar":"$AXISCLASSPATH":"$CLASSPATH"
Listing
1
Export
environment
variables.
In
the
previous
listing
I
reported
all
the
export
(commands
are
valid
for
Unix/Linux
systems)
needed
for
the
environment
variables.
On
that
listing,
the
JAVA_HOME
export
and
the
two
add-‐on
libraries
necessary
for
the
binary
data
transfer
are
red-‐highlighted
(not
necessary
if
it’s
available
on
your
environment
yet).
It
is
possible
to
download
these
two
libraries
directly
from
the
official
site
(Oracle)
or
the
online
service
FindJar
(http://www.findjar.com).
• activation.jar:
Java
Beans
Activation
Framework
(http://www.oracle.com/technetwork/java/jaf11-‐139815.html);
• mail-‐1.4.1.jar:
Java
Mail
API
(http://www.oracle.com/technetwork/java/javamail/index.html)
1.1 Java
Stub
generation
Now
I
will
show
you
how
to
use
the
Apache
Axis
tools
to
generate
Stub
+
Data
Type.
Starting
from
the
SugarCRM
WSDL,
using
the
WSDL2Java
tool
support,
I
will
create
the
client
including:
•
•
•
•
Stub
Data
Type
Locator
Port
Type
Without
deeping
into
details,
all
the
previous
elements
are
the
result
of
the
analysis
based
on
specifications
of
the
WSDL
document,
so
we
need
to
know
the
exact
location
of
the
WSDL
document,
considering
that
the
location
can
be
remote
(URI)
or
local
(file
system).
For
instance
I
assume
that
the
WSDL
document
is
located
at
the
following
address:
http://sugarcrm-‐fe-‐1.local/crm-‐
6.1/service/v2/soap.php?wsdl.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
2
3. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
You
could
execute
a
quick
reachability
test
of
the
WSDL
document
indicating
your
address
(the
SugarCRM
instance)
on
your
internet
browser
or
using
tools
like
curl
or
wget.
$ java -cp $AXISCLASSPATH org.apache.axis.wsdl.WSDL2Java –v -B http://sugarcrm-fe-1.local/crm6.1/service/v2/soap.php?wsdl
Listing
2
Tool
WSDL2Java
execution
WSDL2Java
tool
verbosely
executed
(see
Listing
2),
creates
all
the
necessary
elements
to
speak
with
the
SugarCRM
SOAP
interface.
All
the
generated
classes
(starting
from
the
directory
from
which
the
tool
is
executed)
are
available
inside
the
directory
com/sugarcrm/www/sugarcrm/.
In
my
case,
the
directory
~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src
is
my
working-‐dir,
that
is,
the
directory
from
which
the
tool
has
been
executed
and
where
SOAP
client
sources
and
binaries
will
be
located.
Parsing XML file: http://sugarcrm-fe-1.local/crm-6.1/service/v2/soap.php?wsdl
Retrieving schema at 'http://schemas.xmlsoap.org/soap/encoding/', relative to 'http://sugarcrm-fe1.local/crm-6.1/service/v2/soap.php?wsdl'.
Retrieving schema at 'http://schemas.xmlsoap.org/soap/encoding/', relative to 'http://sugarcrm-fe1.local/crm-6.1/service/v2/soap.php?wsdl'.
{http://schemas.xmlsoap.org/soap/encoding/}Struct already exists
Generating com/sugarcrm/www/sugarcrm/Return_search_result.java
Generating com/sugarcrm/www/sugarcrm/Link_field.java
Generating com/sugarcrm/www/sugarcrm/New_return_document_revision.java
Generating com/sugarcrm/www/sugarcrm/New_return_note_attachment.java
Generating com/sugarcrm/www/sugarcrm/Link_name_to_fields_array.java
Generating com/sugarcrm/www/sugarcrm/New_note_attachment.java
Generating com/sugarcrm/www/sugarcrm/Document_revision.java
Generating com/sugarcrm/www/sugarcrm/Module_list.java
Generating com/sugarcrm/www/sugarcrm/User_auth.java
Generating com/sugarcrm/www/sugarcrm/Get_entry_result_version2.java
Generating com/sugarcrm/www/sugarcrm/Entry_value.java
Generating com/sugarcrm/www/sugarcrm/New_set_entry_result.java
Generating com/sugarcrm/www/sugarcrm/Get_entry_list_result_version2.java
Generating com/sugarcrm/www/sugarcrm/New_set_entries_result.java
Generating com/sugarcrm/www/sugarcrm/New_set_relationship_list_result.java
Generating com/sugarcrm/www/sugarcrm/New_module_fields.java
Generating com/sugarcrm/www/sugarcrm/Field.java
Generating com/sugarcrm/www/sugarcrm/Get_entries_count_result.java
Generating com/sugarcrm/www/sugarcrm/Link_name_value.java
Generating com/sugarcrm/www/sugarcrm/Name_value.java
Generating com/sugarcrm/www/sugarcrm/Get_server_info_result.java
Generating com/sugarcrm/www/sugarcrm/Sugarsoap.java
Generating com/sugarcrm/www/sugarcrm/SugarsoapLocator.java
Generating com/sugarcrm/www/sugarcrm/SugarsoapPortType.java
Generating com/sugarcrm/www/sugarcrm/SugarsoapBindingStub.java
Generating ./build.xml
Listing
3
Tool
WSDL2Java
output
Listing
3
reports
the
output
generated
by
WSDL2Java
tool,
operations
been
executed
are
clearly
shown.
I
intentionally
specified
option
-‐B
on
the
command
line,
this
option
is
responsible
for
the
Ant
Buildfile
(buld.xml)
creation,
that
we
will
use
afterwards
to
compile
the
client
and
to
generate
the
Jar.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
3
4. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
The
tool
supports
other
configuration
options
that
could
be
useful
in
other
situations,
for
further
details
I
recommend
to
consult
the
Apache
Axis
official
documentation.
1.2 Client
SOAP
compilation
Now
we
will
show
how
to
compile
the
SOAP
client
using
both
Ant
tool (The
Apache Software Foundation, 2011)
and
the
classic
method.
<?xml version=”1.0”?>
<project basedir=”.” Default=”jar”>
<property name=”src” location=”.”/>
<property name=”build.classes” location=”classes”/>
<path id=”classpath”>
<pathelement location=”/opt/axis-1_4”/>
<pathelement
location=”/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/tools.jar”/>
<pathelement location=”/opt/axis-1_4/lib/activation.jar”/>
<pathelement location=”/opt/axis-1_4/lib/axis-ant.jar”/>
<pathelement location=”/opt/axis-1_4/lib/axis.jar”/>
<pathelement location=”/opt/axis-1_4/lib/commons-discovery-0.2.jar”/>
<pathelement location=”/opt/axis-1_4/lib/commons-logging-1.0.4.jar”/>
<pathelement location=”/opt/axis-1_4/lib/jaxrpc.jar”/>
<pathelement location=”/opt/axis-1_4/lib/log4j-1.2.8.jar”/>
<pathelement location=”/opt/axis-1_4/lib/mail-1.4.1.jar”/>
<pathelement location=”/opt/axis-1_4/lib/saaj.jar”/>
<pathelement location=”/opt/axis-1_4/lib/wsdl4j-1.5.1.jar”/>
</path>
<target name=”compile”>
<mkdir dir=”${build.classes}”/>
<javac destdir=”${build.classes}” debug=”on”>
<classpath refid=”classpath” />
<src path=”${src}”/>
</javac>
</target>
<target name=”jar” depends=”compile”>
<copy todir=”${build.classes}”>
<fileset dir=”.” Casesensitive=”yes” >
<include name=”**/*.wsdd”/>
</fileset>
</copy>
<jar jarfile=”sugarcrm-soap-client-bin-1.0.0.jar” basedir=”${build.classes}” >
<include name=”**” />
<manifest>
<section name=”org/apache/ws4j2ee”>
<attribute name=”Implementation-Title” value=”Apache Axis”/>
<attribute name=”Implementation-Vendor” value=”Apache Web Services”/>
</section>
</manifest>
</jar>
<delete dir=”${build.classes}”/>
</target>
</project>
Listing
4
Ant
Buldfile
generated
by
WSDL2Java
tool.
Listing
4
shows
the
content
of
build.xml
file
generated
by
WSDL2Java
tool,
I
highlighted
the
only
change
made
to
the
file,
jar
name,
from
soap.jar
to
sugarcrm-‐soap-‐client-‐bin-‐1.0.0.jar.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
4
5. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
SOAP
client
compilation
is
really
simple,
it’s
enough
to
execute
command
ant ,
Listing
5
shows
the
corresponding
output
(just
a
couple
of
lines
omitted
for
space
reason).
Buildfile: ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/build.xml
compile:
[mkdir] Created dir: ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/classes
javac] Compiling 25 source files …
jar:
[jar] Building jar: ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/sugarcrm-soap-client1.0.0.jar
[delete] Deleting directory ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/classes
BUILD SUCCESSFUL
Listing
5
ant.command
output
Ant
tool
is
not
installed
on
your
machine?
No
problem,
I’ll
show
you
how
to
compile
Java
source
at
the
same
time
and
generate
the
Jar
library
of
our
SOAP
client
using
the
classical
way.
Listing
6
shows
the
command
sequence
needed
to
get
the
sugarcrm-‐soap-‐client-‐bin-‐1.0.0.jar
library.
$ mkdir ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/classes
$ javac –cp $AXISCLASSPATH –d ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/classes
com/sugarcrm/www/sugarcrm/*.java
$ cd ~/Documents/Articoli/MyBlog/SugarCRM/JavaClient/src/classes
$ jar cvf sugarcrm-soap-client-1.0.0.jar com/
Listing
6
Java
source
compilation
and
jar
creation.
2. Creation
of
Java
SugarCRMSOAPClient
project
Now
I
will
show
how
to
create
and
correctly
configure
the
Java
project
named
SugarCRMSOAPClient.
Exploiting
the
SOAP
library
previously
created,
our
goal
is
to
write
some
Java
code
that
will
execute
the
following
operations
on
a
SugarCRM
generic
instance:
• Login;
• Creation
of
a
new
contact;
• Read
access
to
the
new
contact.
The
IDE
environment
to
create
our
Java
project
is
Eclipse
Helios
3.6,
however
you
can
use
your
favourite
IDE
as
well.
The
following
steps
show
how
to
create
and
configure
the
Java
project.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
5
6. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Figure
1
Step
1
–
New
Java
project
creation.
Figure
2
Step
2
–
Basic
Java
project
configuration.
Unless
you
have
special
needs,
I
recommend
to
let
the
default
settings
for
the
Java
project
creation.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
6
7. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Figure
3
Step
3
–
Java
building
configuration.
This
step
of
the
project
creation
comes
with
the
path
configuration
for
the
source
code,
the
binaries
and
the
add-‐on
libraries.
Relating
to
Figure
3
configuration,
I
recommend
to
let
it
unchanged,
we
need
instead
to
configure
the
project,
that
is,
the
libraries.
The
dependencies
that
are
to
be
added
to
the
project
are:
• All
the
Apache
Axis
jar
files,
those
included
in
$ANT_LIB;
• The
library
implementing
the
SOAP
SugarCRM
Client
previously
created
(sugarcrm-‐soap-‐client-‐bin-‐1.0.0.jar).
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
7
8. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
In
order
to
add
dependencies
to
the
project,
just
click
on
the
“Libraries”
section
of
the
window
shown
in
Figure
3.
Figure
4
shows
the
window
with
all
the
imported
dependencies.
Figure
4
Step
4
-‐
SugarCRM
SOAP
Client
+
Axis
library
import.
Once
the
dependencies
import
process
is
finished,
you
may
click
OK
button
and
the
project
creation
is
finally
complete.
After
SugarCRMSOAPClient
project
creation,
it
is
possible
to
view
the
whole
project
structure
with
Package
Explorer,
Figure
5
shows
the
com.sugarcrm.www.sugarcrm
project
expansion,
in
other
words,
the
SOAP
library
that
will
be
used
to
connect
to
SugarCRM.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
8
9. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Figure
5
Package
Explorer
after
project
creation.
2.1 Client
coding
Now
we
are
finally
ready
to
write
the
Java
code
that
the
previously
created
SOAP
client
will
use
in
order
to
execute
the
desired
actions.
The
steps
to
accomplish
are:
• SugarCRMSOAPClient
class
creation
(using
static
method
main);
• Configuration
setting
for
constants
to
be
used;
• End
Point
URL
and
Service
creation;
• Stub
Java
creation;
• Login
on
SugarCRM
execution;
• Creation
of
a
new
Contact
on
SugarCRM;
• Read
access
of
the
new
Contact;
• Logout
from
SugarCRM.
Listing
7
shows
the
declaration
of
all
the
constants
to
be
used.
You
just
need
to
substitute
the
values
of
END_POINT_URL,
USER_NAME
e
USER_PASSWORD
with
yours
(of
your
SugarCRM
instance).
public class SugarCRMSoapClient {
private static final String END_POINT_URL = "http://crm-6.1/service/v2/soap.php?wsdl";
private static final String USER_NAME = "will";
private static final String USER_PASSWORD = "will";
private static final String APPLICATION_NAME = Class.class.getName();
private static final Integer TIMEOUT = 6000;
public static void main(String[] args) throws Exception {
….
}
}
Listing
7
Constants
declaration.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
9
10. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
// Create a URL end point for the client
URL wsdlUrl = null;
if (END_POINT_URL.isEmpty()) {
wsdlUrl = new URL(new SugarsoapLocator().getsugarsoapPortAddress() + "?wsdl");
} else {
wsdlUrl = new URL(END_POINT_URL);
}
System.out.println("URL endpoint created successfully!");
// Create Service for test configuration
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service service = serviceFactory.createService(wsdlUrl, new SugarsoapLocator().getServiceName());
System.out.println("Service created successfully");
Listing
8
End
point
URL
and
Service
SugarSOAP
configuration.
Operations
indicated
in
Listing
8
could
launch
some
exceptions;
this
code
section
might
be
enclosed
inside
a
try…catch
block
(omitted
for
space
reason).
The
exceptions
that
might
be
launched
are:
MalformedURLException
and
ServiceException.
// Trying to create a stub
SugarsoapBindingStub binding = new SugarsoapBindingStub(wsdlUrl, service);
binding.setTimeout(TIMEOUT);
System.out.println("Stub created successfully!");
Listing
9
Stub
creation.
Listing
9
shows
the
stub
creation.
The
object
constructor
needs
the
end
point
of
the
service
and
of
the
service
object
(javax.xml.rpc.Service)
previously
created.
The
stub
includes
all
the
operations
needed
to
interface
with
SugarCRM
web
services.
Also
this
code
section
might
be
enclosed
inside
a
try…catch
block,
stub
object
creation
and
the
stub
operations
call
might
launch
the
AxisFault
exception.
/**
* Try to login on SugarCRM
*
* 1) Prepare a MD5 hash password
* 2) Prepare a User Auth object
* 3) Execute login
*/
// 1. Prepare a MD5 hash password
MessageDigest messageDiget = MessageDigest.getInstance("MD5");
messageDiget.update(USER_PASSWORD.getBytes());
// 2. Prepare a User Auth object
User_auth userAuthInfo = new User_auth();
userAuthInfo.setUser_name(USER_NAME);
userAuthInfo.setPassword((new BigInteger(1, messageDiget.digest())).toString(16));
try {
// 3. Execute login
Entry_value loginResult = binding.login(userAuthInfo, APPLICATION_NAME, null);
System.out.println("Login Successfully for " + USER_NAME);
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
10
11. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
System.out.println("Your session Id: " + loginResult.getId());
sessionID = loginResult.getId();
} catch (RemoteException ex) {
System.out.println("Login failed. Message: " + ex.getMessage());
ex.printStackTrace();
}
Listing
10
SugarCRM
Login
process
execution.
All
is
ready
to
execute
the
login
on
SugarCRM.
The
login
operation
needs
three
parameters,
but
only
the
first
parameter
is
fundamental,
we
can
omit
the
last
two.
The
first
parameter
to
prepare
is
the
User_auth
object
including
username
and
(the
MD5
hash)
password.
The
login
operation
returns
the
user
session
id,
and
this
value
will
be
used
for
the
next
operations
I’ll
show.
/**
* Create a new Contact
*
* 1) Setting a new entry
* 2) Setting up parameters for set_entry call
* 3) Creating a name value list array from a hash map. This is not necessary
*
just more elegant way to initialize and add name values to an array
*/
HashMap<String, String> nameValueMap = new HashMap<String, String>();
nameValueMap.put("first_name", "Antonio");
nameValueMap.put("last_name", "Musarra");
nameValueMap.put("title", "IT Senior Consultant");
nameValueMap.put("description","Contatto creato dal Client SOAP Java");
nameValueMap.put("email1", "antonio.musarra@gmail.com");
// Creating a new Name_value array and adding each map entry as 'name' and 'value'
Name_value nameValueListSetEntry[] = new Name_value[nameValueMap.size()];
int i = 0;
for (Entry<String, String> entry : nameValueMap.entrySet()) {
Name_value nameValue = new Name_value();
nameValue.setName(entry.getKey());
nameValue.setValue(entry.getValue());
nameValueListSetEntry[i] = nameValue;
i++;
}
// Trying to set a new entry
New_set_entry_result setEntryResponse = null;
try {
setEntryResponse = binding.set_entry(sessionID, "Contacts", nameValueListSetEntry);
} catch (RemoteException e) {
System.out.println("Set entry failed. Message: " + e.getMessage());
e.printStackTrace();
}
System.out.println("Set entry was successful! Contacts Id: " + setEntryResponse.getId());
Listing
11
New
contact
creation.
Once
the
login
operation
is
successfully
executed,
we
move
creating
a
new
contact.
set_entry
operation
permits
to
insert
a
new
record
on
SugarCRM
and
works
taking
as
input
variables:
the
user
session
id,
the
module
name
(Contacts,
in
this
case)
and
a
Name_value
array
object
defining
the
names
and
the
values
for
the
contact
to
create
(see
Listing
11).
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
11
12. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
set_entry
operation
returns
the
inserted
SugarBean
id,
and
this
value
will
be
used
for
the
contact
data
retrieval
using
get_entry
operation.
get_entry
operation
requires
as
input
variables:
the
user
session,
the
module
name
(Contacts,
in
this
case),
the
SugarBean
id,
an
array
including
the
fields
we
like
to
have
back,
and,
at
last,
an
array
to
relate
the
returned
fields
to
specific
names
(optional).
The
operation
returns
an
entry_list
including
a
Name_value
object
array
containing
the
contact
informations.
Listing
12
shows
the
code
responsible
for
the
contact
(previously
inserted
set_entry
operation)
retrieval.
/**
* Getting an Contacts Entry (the one we just set)
*/
Link_name_to_fields_array[] link_name_to_fields_array = null;
String[] select_fields = null;
Get_entry_result_version2 getEntryResponse = null;
// Trying to get entry
try {
getEntryResponse = binding.get_entry(sessionID,"Contacts", setEntryResponse.getId(),
select_fields , link_name_to_fields_array);
} catch (RemoteException e) {
System.out.println("Get entry failed. Message: " + e.getMessage());
e.printStackTrace();
}
System.out.println("Get entry was successful! Response: ");
// Getting the fields for entry we got.
Entry_value[] entryList = getEntryResponse.getEntry_list();
for (int k=0; k < entryList.length; k++){
Entry_value entry = entryList[k];
Name_value[] entryNameValueList = entry.getName_value_list();
for (int j=0; j< entryNameValueList.length; j++){
Name_value entryNameValue = entryNameValueList[j];
//Outputting only non empty fields
if (!entryNameValue.getValue().isEmpty()){
System.out.println("Attribute Name: '" + entryNameValue.getName() + "'
Attribute Value: '" + entryNameValue.getValue() + "'");
}
}
}
Listing
12
Data
retrieval
for
the
Contact
inserted
on
SugarCRM.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
12
13. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
/**
* Logout
*/
try {
binding.logout(sessionID);
System.out.println("Logout Successfully for " + USER_NAME);
sessionID = null;
} catch (RemoteException ex) {
System.out.println("Login failed. Message: " + ex.getMessage());
ex.printStackTrace();
}
Listing
13
SugarCRM
Logout
operation.
Having
successfully
executed
all
the
operations,
it’s
always
desirable
(even
if
not
mandatory)
to
execute
the
logout
action
from
Sugar,
as
shown
in
Listing
13.
Listing
14
and
Listing
15
show
the
output
generated
executing
the
implemented
Java
application.
Listing
14
reports
an
issue
in
the
service
creation
due
to
SugarCRM
WSDL
document
unreachability.
Listing
15
shows
the
expected
situation:
login,
contact
creation,
contact
retrieval
and
logout.
Figure
6
shows
the
SugarCRM
contact
form
created
by
Java
application
through
the
SOAP
client.
URL endpoint created successfully!
Service creation failed. Message: Error processing WSDL document:
java.io.IOException: WSDL2Java emitter timed out (this often means the WSDL at the specified URL
is inaccessible)!
javax.xml.rpc.ServiceException: Error processing WSDL document:
java.io.IOException: WSDL2Java emitter timed out (this often means the WSDL at the specified URL
is inaccessible)!
at org.apache.axis.client.Service.initService(Service.java:250)
at org.apache.axis.client.Service.<init>(Service.java:165)
at org.apache.axis.client.ServiceFactory.createService(ServiceFactory.java:198)
at it.lab.shirus.sugarcrm.client.soap.SugarCRMSoapClient.main(SugarCRMSoapClient.java:65)
Listing
14
Error
raised
during
the
service
creation.
URL endpoint created successfully!
{http://schemas.xmlsoap.org/soap/encoding/}Struct already exists
Service created successfully
Service Name:{http://www.sugarcrm.com/sugarcrm}sugarsoap
Service WSDL:http://sugarcrm-fe-1.local/crm-6.1/service/v2/soap.php?wsdl
Stub created successfully!
Login Successfully for will
Your session Id: a8e97vgnvfhrtcq3hb5midmp32
Set entry was successful! Contacts Id: 69ff87e9-758d-30f5-0acd-4d2e3fa5b513
Get entry was successful! Response:
Attribute Name: 'modified_by_name' Attribute Value: 'Will Westin'
Attribute Name: 'created_by_name' Attribute Value: 'Will Westin'
Attribute Name: 'id' Attribute Value: '69ff87e9-758d-30f5-0acd-4d2e3fa5b513'
Attribute Name: 'date_entered' Attribute Value: '2011-01-12 23:55:29'
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
13
14. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Attribute Name: 'date_modified' Attribute Value: '2011-01-12 23:55:29'
Attribute Name: 'modified_user_id' Attribute Value: 'seed_will_id'
Attribute Name: 'created_by' Attribute Value: 'seed_will_id'
Attribute Name: 'description' Attribute Value: 'Contatto creato dal Client SOAP Java'
Attribute Name: 'deleted' Attribute Value: '0'
Attribute Name: 'first_name' Attribute Value: 'Antonio'
Attribute Name: 'last_name' Attribute Value: 'Musarra'
Attribute Name: 'title' Attribute Value: 'IT Senior Consultant'
Attribute Name: 'do_not_call' Attribute Value: '0'
Attribute Name: 'email1' Attribute Value: 'antonio.musarra@gmail.com'
Logout Successfully for will
Listing
15
SugarCRMSOAPClient
client
execution.
Figure
6
View
of
the
contact
created
with
the
SOAP
client.
Accessing
to
SugarCRM
web
services
API
documentation
can
help
to
better
understand
the
Java
code
samples
showed
up
to
now.
I’m
sure
that
reporting
part
of
the
Data
Model
(XSD)
schema
as
it
is
published
by
SugarCRM
interface
will
help
to
better
clarify
the
whole
scenario.
Figure
7
User_auth
class
model.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
14
15. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Figure
8
Entry_value
class
model.
Figure
9
Name_Value_List
class
model.
Figure
10
Name_Value
class
model.
Figure
11
New_Set_Entry_List
class
model.
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
15
16. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Figure
12
Get_Entry_List_Result_Version2
class
model.
Figure
13
Entry_List
class
model.
Available
SugarCRM
documentation
relating
to
Data
Model
exposed
from
the
interface
is
not
very
clear
or
is
completely
missing.
As
I
think
it’s
helpful
to
have
the
Data
Model
high
level
documentation,
I
extracted
the
XSD
schema
from
the
WSDL
document
and
make
it
available
on
my
blog:
http://musarra.files.wordpress.com/2011/04/sugacrm-‐6-‐1ce-‐xsd.pdf
At
same
time,
I
created
a
public
repository
(GitHub Inc., 2011)
including
all
I
produced
the
in
this
article.
Repository
address
is:
https://github.com/amusarra/SugarCRMJavaSOAPClient
and
includes
the
following
items:
• JavaApplication:
includes
the
Eclipse
Java
project
of
the
application
that
connects
to
SugarCRM
using
the
SOAP
client;
• SOAPClient:
includes
(source
and
binary
code)
the
SOAP
client
generated
withe
the
Apache
Axis
framework;
• SugaCRM-‐6.1CE-‐WSDL.wsdl:
the
WSDL
document
relating
to
SugarCRM
6.1
Community
Edition;
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
16
17. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
•
•
SugaCRM-‐6.1CE-‐XSD.xsd:
the
XSD
document
extracted
from
the
SugarCRM
WSDL
document;
SugaCRM-‐6.1CE-‐XSD.pdf:
the
data
model
documentation
used
by
SugarCRM
interface.
Figure
14
View
of
the
repository
(git)
SugarCRMJavaSOAPClient.
3. Conclusions
In
this
article
I
tried
to
shed
some
light
on
how
to
configure
and
implement
a
SOAP
Java
client
based
on
Apache
Axis
framework.
The
more
careful
of
you
will
have
noticed
the
decoupling
maintained
between
the
Java
SOAP
and
the
Java
application
that,
for
inner
business
logics,
uses
the
client
to
interface
with
SugarCRM:
this
is
a
best
practice.
Recurring
to
some
basic
code
samples
(login,
set_entry
e
get_entry)
demonstrated
how
it
is
simple
to
interface
with
SugarCRM
web
services,
making
it
simpler
to
the
ones
of
you
really
interested
the
construction
of
the
Java
client
for
SugarCRM
Web
Services.
Every
kind
of
question
or
comment
related
to
the
subjects
in
the
article
are
really
well
encouraged
and
can
be
posted
here:
http://musarra.wordpress.com/2011/04/04/costruire-‐un-‐client-‐java-‐per-‐
sugarcrm
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
17
18. Antonio
Musarra's
Blog
Document Revision:1.0
The
ideal
solution
for
a
problem
Blog:
http://www.dontesta.it
LinkedIn:
http://it.linkedin.com/in/amusarra
Google+:
https://plus.google.com/+AntonioMusarra
Mail:
antonio.musarra@gmail.com
Bibliography
GitHub
Inc.
(2011).
Git
Reference.
Tratto
da
GitHub
Social
Coding:
http://gitref.org/
SugarCRM
Inc.
(2010).
Sugar
Community
Edition
Documentation.
Tratto
da
Sugar
Community
Edition
Documentation:
http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdit
ion/6.1/-‐docs-‐Developer_Guides-‐Sugar_Developer_Guide_6.1.0-‐
Chapter%202%20Application%20Framework.html#9000244
SugarCRM
Inc.
(2010).
Sugar
Community
Edition
Documentation.
Tratto
da
Sugar
Community
Edition
Documentation
|
SugarCRM
-‐
Commercial
Open
Source
CRM:
http://www.sugarcrm.com/crm/support/documentation/SugarCommunityEdit
ion
SugarCRM
Inc.
(2004).
SugarCRM
-‐
Commercial
Open
Source
CRM.
Tratto
da
SugarCRM
-‐
Commercial
Open
Source
CRM:
http://www.sugarcrm.com/crm/
The
Apache
Software
Foundation.
(2011).
Apache
Ant.
Tratto
da
The
Apache
Ant
Project:
http://ant.apache.org/
The
Apache
Software
Foundation.
(2005).
Web
Service
-‐
Axis.
Tratto
da
Apache
<Web
Services
>
Project:
http://axis.apache.org/axis/
14/01/14
This
document
is
issued
with
license
Creative
Commons
Attribution-‐NonCommercial-‐ShareAlike
18