From 05f6123f93be6c968829565695621b00f33f15fb Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Sat, 2 Sep 2017 00:22:54 +0200
Subject: [PATCH] Please cherry-pick: - I accidently (oversaw it) used
 Converter<MyPoji> which is JSF 2.3 (beta   currently) way, now I could revert
 it, but better is to stay. - made all converters/validators that invoke
 business methods (EJB) managed   so the annotation EJB will work again.
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .../FinancialsCompanyNameValidator.java       | 35 +++++--------------
 .../PizzaMobileProviderWebRequestBean.java    |  2 +-
 .../PizzaBusinessContactConverter.java        | 30 +++-------------
 .../PizzaCompanyEmployeeConverter.java        | 30 +++-------------
 .../PizzaCompanyHeadquartersConverter.java    | 28 +++------------
 .../contact/PizzaContactConverter.java        | 30 ++++------------
 .../country/PizzaCountryConverter.java        | 28 +++------------
 .../fax/PizzaFaxNumberConverter.java          | 28 +++------------
 .../PizzaLandLineNumberConverter.java         | 28 +++------------
 .../mobile/PizzaMobileNumberConverter.java    | 30 ++++------------
 .../PizzaMobileProviderConverter.java         | 29 +++------------
 .../converter/user/PizzaUserConverter.java    | 28 +++------------
 .../PizzaEmailAddressValidator.java           | 27 +++-----------
 .../validator/user/PizzaUserIdValidator.java  | 32 ++++-------------
 14 files changed, 73 insertions(+), 312 deletions(-)

diff --git a/src/java/org/mxchange/jfinancials/validator/business/basicdata/FinancialsCompanyNameValidator.java b/src/java/org/mxchange/jfinancials/validator/business/basicdata/FinancialsCompanyNameValidator.java
index 41bd9f76..e1f1b854 100644
--- a/src/java/org/mxchange/jfinancials/validator/business/basicdata/FinancialsCompanyNameValidator.java
+++ b/src/java/org/mxchange/jfinancials/validator/business/basicdata/FinancialsCompanyNameValidator.java
@@ -17,16 +17,12 @@
 package org.mxchange.jfinancials.validator.business.basicdata;
 
 import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.application.FacesMessage;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
-import javax.faces.convert.ConverterException;
 import javax.faces.validator.FacesValidator;
 import javax.faces.validator.ValidatorException;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote;
 import org.mxchange.jcoreee.validator.string.BaseStringValidator;
 
 /**
@@ -34,18 +30,19 @@ import org.mxchange.jcoreee.validator.string.BaseStringValidator;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesValidator ("CompanyNameValidator")
+@FacesValidator (value = "CompanyNameValidator", managed = true)
 public class FinancialsCompanyNameValidator extends BaseStringValidator {
 
 	/**
-	 * Business contact EJB
+	 * Serial number
 	 */
-	private static BasicCompanyDataSessionBeanRemote BASIC_DATA_BEAN;
+	private static final long serialVersionUID = 57_283_657_476_561L;
 
 	/**
-	 * Serial number
+	 * Business contact EJB
 	 */
-	private static final long serialVersionUID = 57_283_657_476_561L;
+	@EJB (lookup = "java:global/jfinancials-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote")
+	private BusinessDataSessionBeanRemote basicDataBean;
 
 	@Override
 	public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
@@ -76,24 +73,8 @@ public class FinancialsCompanyNameValidator extends BaseStringValidator {
 			checkExisting = Boolean.parseBoolean((String) attribute);
 		}
 
-		// Is the bean not yet set?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == FinancialsCompanyNameValidator.BASIC_DATA_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				FinancialsCompanyNameValidator.BASIC_DATA_BEAN = (BasicCompanyDataSessionBeanRemote) initialContext.lookup("java:global/addressbook-ejb/basicCompanyData!org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Check if name is already used
-		Boolean nameExists = FinancialsCompanyNameValidator.BASIC_DATA_BEAN.isCompanyNameUsed(companyName);
+		Boolean nameExists = this.basicDataBean.isCompanyNameUsed(companyName);
 
 		// Is the user id valid?
 		if ((!nameExists) && (checkExisting)) {
diff --git a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java
index 7406a224..b42f1bc1 100644
--- a/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java
+++ b/src/java/org/mxchange/pizzaapplication/beans/mobileprovider/PizzaMobileProviderWebRequestBean.java
@@ -50,7 +50,7 @@ public class PizzaMobileProviderWebRequestBean extends BasePizzaController imple
 	/**
 	 * Remote EJB for mobile providers (regular)
 	 */
-	@EJB (lookup = "java:global/pizzaservice-ejb/mobileprovider!org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote")
+	@EJB (lookup = "java:global/pizzaservice-ejb/mobileProvider!org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote")
 	private MobileProviderSingletonBeanRemote mobileRemoteBean;
 
 	/**
diff --git a/src/java/org/mxchange/pizzaapplication/converter/business/basicdata/PizzaBusinessContactConverter.java b/src/java/org/mxchange/pizzaapplication/converter/business/basicdata/PizzaBusinessContactConverter.java
index 165d6e78..a1a771f2 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/business/basicdata/PizzaBusinessContactConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/business/basicdata/PizzaBusinessContactConverter.java
@@ -16,17 +16,12 @@
  */
 package org.mxchange.pizzaapplication.converter.business.basicdata;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
-import org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote;
 import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicCompanyDataNotFoundException;
 
 /**
@@ -34,13 +29,14 @@ import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicCompanyDataNotFo
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "BusinessContactConverter")
+@FacesConverter ("BusinessContactConverter")
 public class PizzaBusinessContactConverter implements Converter<BusinessBasicData> {
 
 	/**
 	 * Business contact EJB
 	 */
-	private static BasicCompanyDataSessionBeanRemote BASIC_DATA_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote")
+	private BusinessDataSessionBeanRemote basicDataBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +55,6 @@ public class PizzaBusinessContactConverter implements Converter<BusinessBasicDat
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaBusinessContactConverter.BASIC_DATA_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaBusinessContactConverter.BASIC_DATA_BEAN = (BasicCompanyDataSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/basicCompanyData!org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		BusinessBasicData businessContact = null;
 
@@ -83,7 +63,7 @@ public class PizzaBusinessContactConverter implements Converter<BusinessBasicDat
 			Long basicDataId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
-			businessContact = PizzaBusinessContactConverter.BASIC_DATA_BEAN.findBasicDataById(basicDataId);
+			businessContact = this.basicDataBean.findBasicDataById(basicDataId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/business/company_employee/PizzaCompanyEmployeeConverter.java b/src/java/org/mxchange/pizzaapplication/converter/business/company_employee/PizzaCompanyEmployeeConverter.java
index 1d35ec11..eb2703b2 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/business/company_employee/PizzaCompanyEmployeeConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/business/company_employee/PizzaCompanyEmployeeConverter.java
@@ -16,17 +16,12 @@
  */
 package org.mxchange.pizzaapplication.converter.business.company_employee;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import org.mxchange.jcontactsbusiness.model.employee.CompanyEmployeeSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.model.employee.Employee;
 import org.mxchange.jcontactsbusiness.exceptions.employee.CompanyEmployeeNotFoundException;
 
 /**
@@ -34,13 +29,14 @@ import org.mxchange.jcontactsbusiness.exceptions.employee.CompanyEmployeeNotFoun
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "CompanyEmployeeConverter")
+@FacesConverter ("CompanyEmployeeConverter")
 public class PizzaCompanyEmployeeConverter implements Converter<Employee> {
 
 	/**
 	 * CompanyEmployee EJB
 	 */
-	private static CompanyEmployeeSessionBeanRemote COMPANY_EMPLOYEE_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/companyEmployee!org.mxchange.jcontactsbusiness.employee.CompanyEmployeeSessionBeanRemote")
+	private CompanyEmployeeSessionBeanRemote companyEmployeeBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +55,6 @@ public class PizzaCompanyEmployeeConverter implements Converter<Employee> {
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaCompanyEmployeeConverter.COMPANY_EMPLOYEE_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaCompanyEmployeeConverter.COMPANY_EMPLOYEE_BEAN = (CompanyEmployeeSessionBeanRemote) initialContext.lookup("java:global/pizzaservice-ejb/companyEmployee!org.mxchange.jcontactsbusiness.model.employee.CompanyEmployeeSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		Employee companyEmployee = null;
 
@@ -83,7 +63,7 @@ public class PizzaCompanyEmployeeConverter implements Converter<Employee> {
 			Long employeeId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
-			companyEmployee = PizzaCompanyEmployeeConverter.COMPANY_EMPLOYEE_BEAN.findCompanyEmployeeById(employeeId);
+			companyEmployee = this.companyEmployeeBean.findCompanyEmployeeById(employeeId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/business/headquarters/PizzaCompanyHeadquartersConverter.java b/src/java/org/mxchange/pizzaapplication/converter/business/headquarters/PizzaCompanyHeadquartersConverter.java
index 2bd8e3a4..1233fa4a 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/business/headquarters/PizzaCompanyHeadquartersConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/business/headquarters/PizzaCompanyHeadquartersConverter.java
@@ -16,15 +16,12 @@
  */
 package org.mxchange.pizzaapplication.converter.business.headquarters;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jcontactsbusiness.exceptions.headquarters.CompanyHeadquartersNotFoundException;
 import org.mxchange.jcontactsbusiness.model.headquarters.CompanyHeadquartersSessionBeanRemote;
 import org.mxchange.jcontactsbusiness.model.headquarters.HeadquartersData;
@@ -34,13 +31,14 @@ import org.mxchange.jcontactsbusiness.model.headquarters.HeadquartersData;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "CompanyHeadquartersConverter")
+@FacesConverter ("CompanyHeadquartersConverter")
 public class PizzaCompanyHeadquartersConverter implements Converter<HeadquartersData> {
 
 	/**
 	 * CompanyEmployee EJB
 	 */
-	private static CompanyHeadquartersSessionBeanRemote COMPANY_HEADQUARTERS_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/companyEmployee!org.mxchange.jcontactsbusiness.headquarters.CompanyHeadquartersSessionBeanRemote")
+	private CompanyHeadquartersSessionBeanRemote companyHeadquartersBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +57,6 @@ public class PizzaCompanyHeadquartersConverter implements Converter<Headquarters
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaCompanyHeadquartersConverter.COMPANY_HEADQUARTERS_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaCompanyHeadquartersConverter.COMPANY_HEADQUARTERS_BEAN = (CompanyHeadquartersSessionBeanRemote) initialContext.lookup("java:global/jjobs-ejb/companyEmployee!org.mxchange.jcontactsbusiness.model.headquarters.CompanyHeadquartersSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		HeadquartersData companyHeadquarters = null;
 
@@ -83,7 +65,7 @@ public class PizzaCompanyHeadquartersConverter implements Converter<Headquarters
 			Long headquartersId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
-			companyHeadquarters = PizzaCompanyHeadquartersConverter.COMPANY_HEADQUARTERS_BEAN.findCompanyHeadquartersById(headquartersId);
+			companyHeadquarters = this.companyHeadquartersBean.findCompanyHeadquartersById(headquartersId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/contact/PizzaContactConverter.java b/src/java/org/mxchange/pizzaapplication/converter/contact/PizzaContactConverter.java
index bde36fc9..d486439d 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/contact/PizzaContactConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/contact/PizzaContactConverter.java
@@ -16,31 +16,29 @@
  */
 package org.mxchange.pizzaapplication.converter.contact;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
+import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
 import org.mxchange.jcontacts.model.contact.Contact;
 import org.mxchange.jcontacts.model.contact.ContactSessionBeanRemote;
-import org.mxchange.jcontacts.exceptions.ContactNotFoundException;
 
 /**
  * Converter for contact id <-> valid contact instance
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "ContactConverter")
+@FacesConverter ("ContactConverter")
 public class PizzaContactConverter implements Converter<Contact> {
 
 	/**
 	 * User EJB
 	 */
-	private static ContactSessionBeanRemote CONTACT_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote")
+	private ContactSessionBeanRemote contactBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +57,6 @@ public class PizzaContactConverter implements Converter<Contact> {
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaContactConverter.CONTACT_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaContactConverter.CONTACT_BEAN = (ContactSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/contact!org.mxchange.jcontacts.model.contact.ContactSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		Contact contact = null;
 
@@ -83,7 +65,7 @@ public class PizzaContactConverter implements Converter<Contact> {
 			Long contactId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
-			contact = PizzaContactConverter.CONTACT_BEAN.findContactById(contactId);
+			contact = this.contactBean.findContactById(contactId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/country/PizzaCountryConverter.java b/src/java/org/mxchange/pizzaapplication/converter/country/PizzaCountryConverter.java
index 56e749bb..e63d29f2 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/country/PizzaCountryConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/country/PizzaCountryConverter.java
@@ -16,17 +16,14 @@
  */
 package org.mxchange.pizzaapplication.converter.country;
 
-import java.text.MessageFormat;
 import java.util.List;
 import java.util.Objects;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jcountry.model.data.Country;
 import org.mxchange.jcountry.model.data.CountrySingletonBeanRemote;
 
@@ -35,13 +32,14 @@ import org.mxchange.jcountry.model.data.CountrySingletonBeanRemote;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "CountryConverter")
+@FacesConverter ("CountryConverter")
 public class PizzaCountryConverter implements Converter<Country> {
 
 	/**
 	 * Country bean
 	 */
-	private static CountrySingletonBeanRemote COUNTRY_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote")
+	private CountrySingletonBeanRemote countryBean;
 
 	/**
 	 * Default constructor
@@ -60,24 +58,8 @@ public class PizzaCountryConverter implements Converter<Country> {
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaCountryConverter.COUNTRY_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and country bean
-				PizzaCountryConverter.COUNTRY_BEAN = (CountrySingletonBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/country!org.mxchange.jcountry.model.data.CountrySingletonBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Get full list
-		List<Country> countryList = PizzaCountryConverter.COUNTRY_BEAN.allCountries();
+		List<Country> countryList = this.countryBean.allCountries();
 
 		// Init value
 		Country country = null;
diff --git a/src/java/org/mxchange/pizzaapplication/converter/fax/PizzaFaxNumberConverter.java b/src/java/org/mxchange/pizzaapplication/converter/fax/PizzaFaxNumberConverter.java
index cbde7f55..7e947b23 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/fax/PizzaFaxNumberConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/fax/PizzaFaxNumberConverter.java
@@ -16,15 +16,12 @@
  */
 package org.mxchange.pizzaapplication.converter.fax;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jphone.exceptions.PhoneEntityNotFoundException;
 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
 import org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote;
@@ -34,13 +31,14 @@ import org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "FaxNumberConverter")
+@FacesConverter ("FaxNumberConverter")
 public class PizzaFaxNumberConverter implements Converter<DialableFaxNumber> {
 
 	/**
 	 * Phone EJB
 	 */
-	private static PhoneSessionBeanRemote PHONE_BEAN;
+	@EJB(lookup = "java:global/jfinancials-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote")
+	private PhoneSessionBeanRemote phoneBean;
 
 	/**
 	 * Default constructor
@@ -62,22 +60,6 @@ public class PizzaFaxNumberConverter implements Converter<DialableFaxNumber> {
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaFaxNumberConverter.PHONE_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaFaxNumberConverter.PHONE_BEAN = (PhoneSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/phone!org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		DialableFaxNumber faxNumber = null;
 
@@ -88,7 +70,7 @@ public class PizzaFaxNumberConverter implements Converter<DialableFaxNumber> {
 			// Log message
 			// @TODO Not possible here: this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject: faxNumberId={1}", this.getClass().getSimpleName(), faxNumberId)); //NOI18N
 			// Try to get mobile instance from it
-			faxNumber = PizzaFaxNumberConverter.PHONE_BEAN.findFaxNumberById(faxNumberId);
+			faxNumber = this.phoneBean.findFaxNumberById(faxNumberId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/landline/PizzaLandLineNumberConverter.java b/src/java/org/mxchange/pizzaapplication/converter/landline/PizzaLandLineNumberConverter.java
index 4ee530f8..fb775054 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/landline/PizzaLandLineNumberConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/landline/PizzaLandLineNumberConverter.java
@@ -16,15 +16,12 @@
  */
 package org.mxchange.pizzaapplication.converter.landline;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jphone.exceptions.PhoneEntityNotFoundException;
 import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
 import org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote;
@@ -34,13 +31,14 @@ import org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "LandLineNumberConverter")
+@FacesConverter ("LandLineNumberConverter")
 public class PizzaLandLineNumberConverter implements Converter<DialableLandLineNumber> {
 
 	/**
 	 * Phone EJB
 	 */
-	private static PhoneSessionBeanRemote PHONE_BEAN;
+	@EJB(lookup = "java:global/jfinancials-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote")
+	private PhoneSessionBeanRemote phoneBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +57,6 @@ public class PizzaLandLineNumberConverter implements Converter<DialableLandLineN
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaLandLineNumberConverter.PHONE_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaLandLineNumberConverter.PHONE_BEAN = (PhoneSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/phone!org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		DialableLandLineNumber landLineNumber = null;
 
@@ -83,7 +65,7 @@ public class PizzaLandLineNumberConverter implements Converter<DialableLandLineN
 			Long landLineNumberId = Long.valueOf(submittedValue);
 
 			// Try to get mobile instance from it
-			landLineNumber = PizzaLandLineNumberConverter.PHONE_BEAN.findLandLineNumberById(landLineNumberId);
+			landLineNumber = this.phoneBean.findLandLineNumberById(landLineNumberId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/mobile/PizzaMobileNumberConverter.java b/src/java/org/mxchange/pizzaapplication/converter/mobile/PizzaMobileNumberConverter.java
index f4405c2c..281cd848 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/mobile/PizzaMobileNumberConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/mobile/PizzaMobileNumberConverter.java
@@ -16,17 +16,14 @@
  */
 package org.mxchange.pizzaapplication.converter.mobile;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jphone.exceptions.PhoneEntityNotFoundException;
-import org.mxchange.jphone.model.phonenumbers.model.mobile.DialableMobileNumber;
+import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
 import org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote;
 
 /**
@@ -34,13 +31,14 @@ import org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "MobileNumberConverter")
+@FacesConverter ("MobileNumberConverter")
 public class PizzaMobileNumberConverter implements Converter<DialableMobileNumber> {
 
 	/**
 	 * Phone EJB
 	 */
-	private static PhoneSessionBeanRemote PHONE_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote")
+	private PhoneSessionBeanRemote phoneBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +57,6 @@ public class PizzaMobileNumberConverter implements Converter<DialableMobileNumbe
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaMobileNumberConverter.PHONE_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaMobileNumberConverter.PHONE_BEAN = (PhoneSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/phone!org.mxchange.jphone.model.phonenumbers.phone.PhoneSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		DialableMobileNumber mobileNumber = null;
 
@@ -86,7 +68,7 @@ public class PizzaMobileNumberConverter implements Converter<DialableMobileNumbe
 			// NOISY-DEBUG: this.loggerBeanLocal.logDebug(MessageFormat.format("getAsObject: userId{0}", userId)); //NOI18N
 
 			// Try to get mobile instance from it
-			mobileNumber = PizzaMobileNumberConverter.PHONE_BEAN.findMobileNumberById(mobileId);
+			mobileNumber = this.phoneBean.findMobileNumberById(mobileId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/converter/mobileprovider/PizzaMobileProviderConverter.java b/src/java/org/mxchange/pizzaapplication/converter/mobileprovider/PizzaMobileProviderConverter.java
index 4c1d78bf..07fc7e83 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/mobileprovider/PizzaMobileProviderConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/mobileprovider/PizzaMobileProviderConverter.java
@@ -16,18 +16,14 @@
  */
 package org.mxchange.pizzaapplication.converter.mobileprovider;
 
-import java.text.MessageFormat;
 import java.util.List;
 import java.util.Objects;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
-import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import org.mxchange.jphone.model.phonenumbers.model.mobileprovider.MobileProvider;
+import org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProvider;
 import org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote;
 
 /**
@@ -41,7 +37,8 @@ public class PizzaMobileProviderConverter implements Converter<MobileProvider> {
 	/**
 	 * Mobile provider bean
 	 */
-	private static MobileProviderSingletonBeanRemote MOBILE_PROVIDER_BEAN;
+	@EJB(lookup = "java:global/jfinancials-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote")
+	private MobileProviderSingletonBeanRemote mobileProviderBean;
 
 	/**
 	 * Default constructor
@@ -60,24 +57,8 @@ public class PizzaMobileProviderConverter implements Converter<MobileProvider> {
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaMobileProviderConverter.MOBILE_PROVIDER_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				/// and mobile provider controller
-				PizzaMobileProviderConverter.MOBILE_PROVIDER_BEAN = (MobileProviderSingletonBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/mobileprovider!org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Get full list
-		List<MobileProvider> providerList = PizzaMobileProviderConverter.MOBILE_PROVIDER_BEAN.allMobileProvider();
+		List<MobileProvider> providerList = this.mobileProviderBean.allMobileProviders();
 
 		// Init value
 		MobileProvider provider = null;
diff --git a/src/java/org/mxchange/pizzaapplication/converter/user/PizzaUserConverter.java b/src/java/org/mxchange/pizzaapplication/converter/user/PizzaUserConverter.java
index d7910c07..6a718577 100644
--- a/src/java/org/mxchange/pizzaapplication/converter/user/PizzaUserConverter.java
+++ b/src/java/org/mxchange/pizzaapplication/converter/user/PizzaUserConverter.java
@@ -16,15 +16,12 @@
  */
 package org.mxchange.pizzaapplication.converter.user;
 
-import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
 import javax.faces.convert.FacesConverter;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jusercore.exceptions.UserNotFoundException;
 import org.mxchange.jusercore.model.user.User;
 import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
@@ -34,13 +31,14 @@ import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@FacesConverter (value = "UserConverter")
+@FacesConverter ("UserConverter")
 public class PizzaUserConverter implements Converter<User> {
 
 	/**
 	 * User EJB
 	 */
-	private static UserSessionBeanRemote USER_BEAN;
+	@EJB(lookup = "java:global/jfinancials-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote")
+	private UserSessionBeanRemote userBean;
 
 	/**
 	 * Default constructor
@@ -59,22 +57,6 @@ public class PizzaUserConverter implements Converter<User> {
 			return null;
 		}
 
-		// Is the bean there?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaUserConverter.USER_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaUserConverter.USER_BEAN = (UserSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new RuntimeException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Init instance
 		User user = null;
 
@@ -83,7 +65,7 @@ public class PizzaUserConverter implements Converter<User> {
 			Long userId = Long.valueOf(submittedValue);
 
 			// Try to get user instance from it
-			user = PizzaUserConverter.USER_BEAN.findUserById(userId);
+			user = this.userBean.findUserById(userId);
 		} catch (final NumberFormatException ex) {
 			// Throw again
 			throw new ConverterException(ex);
diff --git a/src/java/org/mxchange/pizzaapplication/validator/emailaddress/PizzaEmailAddressValidator.java b/src/java/org/mxchange/pizzaapplication/validator/emailaddress/PizzaEmailAddressValidator.java
index a6edb351..9f29d9c8 100644
--- a/src/java/org/mxchange/pizzaapplication/validator/emailaddress/PizzaEmailAddressValidator.java
+++ b/src/java/org/mxchange/pizzaapplication/validator/emailaddress/PizzaEmailAddressValidator.java
@@ -18,15 +18,13 @@ package org.mxchange.pizzaapplication.validator.emailaddress;
 
 import java.text.MessageFormat;
 import java.util.regex.Pattern;
+import javax.ejb.EJB;
 import javax.faces.application.FacesMessage;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.validator.FacesValidator;
 import javax.faces.validator.ValidatorException;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import org.mxchange.jcontacts.contact.ContactSessionBeanRemote;
+import org.mxchange.jcontacts.model.contact.ContactSessionBeanRemote;
 import org.mxchange.jcoreee.validator.string.BaseStringValidator;
 
 /**
@@ -40,7 +38,8 @@ public class PizzaEmailAddressValidator extends BaseStringValidator {
 	/**
 	 * Contact session-scoped bean
 	 */
-	private static ContactSessionBeanRemote CONTACT_BEAN;
+	@EJB (lookup = "java:global/jfinancials-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote")
+	private ContactSessionBeanRemote contactBean;
 
 	/**
 	 * Email pattern
@@ -118,27 +117,11 @@ public class PizzaEmailAddressValidator extends BaseStringValidator {
 			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message));
 		}
 
-		// Is the bean not yet set?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaEmailAddressValidator.CONTACT_BEAN) {
-			// Try it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// Try to lookup
-				PizzaEmailAddressValidator.CONTACT_BEAN = (ContactSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ValidatorException(new FacesMessage(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage())), ex); //NOI18N
-			}
-		}
-
 		// Get client id (aka form id)
 		String clientId = component.getClientId();
 
 		// Is it registered?
-		Boolean isRegistered = PizzaEmailAddressValidator.CONTACT_BEAN.isEmailAddressRegistered(emailAddress);
+		Boolean isRegistered = this.contactBean.isEmailAddressRegistered(emailAddress);
 
 		// Is the email address already registered?
 		if ((!clientId.endsWith("resendEmailAddress")) && (isRegistered)) { //NOI18N
diff --git a/src/java/org/mxchange/pizzaapplication/validator/user/PizzaUserIdValidator.java b/src/java/org/mxchange/pizzaapplication/validator/user/PizzaUserIdValidator.java
index f72bcb94..57a8f6ec 100644
--- a/src/java/org/mxchange/pizzaapplication/validator/user/PizzaUserIdValidator.java
+++ b/src/java/org/mxchange/pizzaapplication/validator/user/PizzaUserIdValidator.java
@@ -17,15 +17,12 @@
 package org.mxchange.pizzaapplication.validator.user;
 
 import java.text.MessageFormat;
+import javax.ejb.EJB;
 import javax.faces.application.FacesMessage;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
-import javax.faces.convert.ConverterException;
 import javax.faces.validator.FacesValidator;
 import javax.faces.validator.ValidatorException;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import org.mxchange.jcoreee.validator.number.BaseNumberValidator;
 import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
 
@@ -38,14 +35,15 @@ import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
 public class PizzaUserIdValidator extends BaseNumberValidator {
 
 	/**
-	 * Remote bean
+	 * Serial number
 	 */
-	private static UserSessionBeanRemote USER_BEAN;
+	private static final long serialVersionUID = 12_869_569_314_764_690L;
 
 	/**
-	 * Serial number
+	 * Remote bean
 	 */
-	private static final long serialVersionUID = 12_869_569_314_764_690L;
+	@EJB (lookup = "java:global/jfinancials-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote")
+	private UserSessionBeanRemote userBean;
 
 	/**
 	 * Default constructor
@@ -64,24 +62,8 @@ public class PizzaUserIdValidator extends BaseNumberValidator {
 		// Cast value
 		Long userId = (Long) value;
 
-		// Is the bean not yet set?
-		// @TODO Requires this synchronization or is it (sync) confusing the container?
-		if (null == PizzaUserIdValidator.USER_BEAN) {
-			// Try to get it
-			try {
-				// Get initial context
-				Context initialContext = new InitialContext();
-
-				// ... and user controller
-				PizzaUserIdValidator.USER_BEAN = (UserSessionBeanRemote) initialContext.lookup("java:global/pizzaapplication-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N
-			} catch (final NamingException ex) {
-				// Continue to throw it
-				throw new ConverterException(MessageFormat.format("initialContext.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N
-			}
-		}
-
 		// Define variable
-		Boolean ifUserExists = PizzaUserIdValidator.USER_BEAN.ifUserIdExists(userId);
+		Boolean ifUserExists = this.userBean.ifUserIdExists(userId);
 
 		// Is the user id valid?
 		if (!ifUserExists) {
-- 
2.39.5