Просмотр исходного кода

Fix USSD EJB Calling via Web Service (javax.ejb.NoSuchEJBException)

anthony.moreno 7 лет назад
Родитель
Сommit
8133493c0a

+ 3 - 0
GabonTelMobicashMobileAppHelper/.checkstyle

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false"/>

+ 4 - 26
GabonTelMobicashMobileAppHelper/pom.xml

@@ -17,17 +17,19 @@
 	<build>
 	<build>
         <finalName>Test_210_GabonTelMobicashMobileAppHelper</finalName>
         <finalName>Test_210_GabonTelMobicashMobileAppHelper</finalName>
     </build>
     </build>
-	<dependencyManagement>
+<!--
+    <dependencyManagement>
 	   <dependencies>
 	   <dependencies>
 	      <dependency>
 	      <dependency>
 	         <groupId>org.wildfly</groupId>
 	         <groupId>org.wildfly</groupId>
 	         <artifactId>wildfly-ejb-client-bom</artifactId>
 	         <artifactId>wildfly-ejb-client-bom</artifactId>
-	         <version>12.0.0.Final</version>
+	         <version>11.0.0.CR1</version>
 	         <type>pom</type>
 	         <type>pom</type>
 	         <scope>import</scope>
 	         <scope>import</scope>
 	      </dependency>
 	      </dependency>
 	   </dependencies>
 	   </dependencies>
 	</dependencyManagement>
 	</dependencyManagement>
+  -->
 	<dependencies>
 	<dependencies>
         <dependency>
         <dependency>
             <groupId>org.wildfly</groupId>
             <groupId>org.wildfly</groupId>
@@ -35,30 +37,6 @@
             <type>pom</type>
             <type>pom</type>
 	         <scope>provided</scope>
 	         <scope>provided</scope>
         </dependency>
         </dependency>
-		<dependency>
-		    <groupId>org.wildfly.wildfly-http-client</groupId>
-		    <artifactId>wildfly-http-ejb-client</artifactId>
-		    <version>1.0.11.Final</version>
-	        <scope>provided</scope>
-		</dependency>
-		<dependency>
-		    <groupId>org.wildfly.wildfly-http-client</groupId>
-		    <artifactId>wildfly-http-naming-client</artifactId>
-		    <version>1.0.11.Final</version>
-	        <scope>provided</scope>
-		</dependency>
-		<dependency>
-		    <groupId>org.wildfly.wildfly-http-client</groupId>
-		    <artifactId>wildfly-http-client-common</artifactId>
-		    <version>1.0.11.Final</version>
-	        <scope>provided</scope>
-		</dependency>
-		<dependency>
-		    <groupId>org.jboss.remoting</groupId>
-		    <artifactId>jboss-remoting</artifactId>
-		    <version>5.0.8.Final</version>
-	         <scope>compile</scope>
-		</dependency>
         <dependency>
         <dependency>
             <groupId>org.jboss.logging</groupId>
             <groupId>org.jboss.logging</groupId>
 		    <artifactId>jboss-logging</artifactId>
 		    <artifactId>jboss-logging</artifactId>

+ 28 - 0
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/thirdparty/helper/BeanCaller.java

@@ -0,0 +1,28 @@
+package com.psi.gabontel.mobileapp.thirdparty.helper;
+
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import com.psi.ussd.interfaces.UssdReceiverFunction;
+
+public class BeanCaller implements Callable<String>{
+    private final Properties prop;
+    private final String ejb;
+    private final List<String> params;
+    public BeanCaller(Properties prop, String ejb, List<String> params) {
+        this.prop = prop;
+        this.ejb = ejb;
+        this.params = params;
+    }
+
+    @Override
+    public String call() throws Exception {
+        final Context context = new InitialContext(prop);
+        UssdReceiverFunction ussd = (UssdReceiverFunction)context.lookup(ejb);
+        return ussd.requestFunc(params);
+    }
+}

+ 44 - 11
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/thirdparty/helper/InitializerBean.java

@@ -1,8 +1,12 @@
 package com.psi.gabontel.mobileapp.thirdparty.helper;
 package com.psi.gabontel.mobileapp.thirdparty.helper;
 
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map;
+import java.util.Properties;
 
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PostConstruct;
 import javax.ejb.Singleton;
 import javax.ejb.Singleton;
@@ -12,9 +16,15 @@ import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import javax.naming.NamingException;
 
 
 import org.jboss.logging.Logger;
 import org.jboss.logging.Logger;
+import org.wildfly.naming.client.WildFlyInitialContextFactory;
+import org.wildfly.security.auth.client.AuthenticationConfiguration;
+import org.wildfly.security.auth.client.AuthenticationContext;
+import org.wildfly.security.auth.client.MatchRule;
+import org.wildfly.security.sasl.SaslMechanismSelector;
 
 
 import com.psi.common.db.DataRow;
 import com.psi.common.db.DataRow;
 import com.psi.common.db.DataRowCollection;
 import com.psi.common.db.DataRowCollection;
+import com.psi.common.db.DbQuery;
 import com.psi.common.db.DbWrapper;
 import com.psi.common.db.DbWrapper;
 import com.psi.common.util.StringUtil;
 import com.psi.common.util.StringUtil;
 import com.psi.ussd.interfaces.UssdReceiverFunction;
 import com.psi.ussd.interfaces.UssdReceiverFunction;
@@ -24,8 +34,10 @@ import com.psi.ussd.interfaces.UssdReceiverFunction;
 public class InitializerBean {
 public class InitializerBean {
     private static final Logger log = Logger.getLogger(InitializerBean.class);
     private static final Logger log = Logger.getLogger(InitializerBean.class);
     private static final Hashtable<String,String> ussdgwmenuejb = new Hashtable<String,String>();
     private static final Hashtable<String,String> ussdgwmenuejb = new Hashtable<String,String>();
-    private static final Hashtable<String, String> jndiProperties = new Hashtable<>();
-    private static Context context;
+    private static final Properties jndiProperties = new Properties();
+    private static AuthenticationConfiguration commonconfig = AuthenticationConfiguration.empty().setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("DIGEST-MD5"));
+    private static AuthenticationConfiguration userconfig = AuthenticationConfiguration.empty().setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("DIGEST-MD5"));
+
     @PostConstruct
     @PostConstruct
     public void initialize() {
     public void initialize() {
         DbWrapper db = new DbWrapper("java:jboss/datasources/UssdDbClient");
         DbWrapper db = new DbWrapper("java:jboss/datasources/UssdDbClient");
@@ -36,7 +48,7 @@ public class InitializerBean {
             DataRow row = iterator.next();
             DataRow row = iterator.next();
             
             
             String paramname = row.getString("PARAMNAME");
             String paramname = row.getString("PARAMNAME");
-            String ejbname = row.getString("EJBNAME").replace("java:jboss/exported", "ejb:");
+            String ejbname = row.getString("EJBNAME").replace("java:jboss/exported", "");
             ussdgwmenuejb.put(paramname, ejbname);
             ussdgwmenuejb.put(paramname, ejbname);
         }
         }
         db = DbWrapper.getInstance();
         db = DbWrapper.getInstance();
@@ -45,16 +57,16 @@ public class InitializerBean {
         String url = row.getString("URL");
         String url = row.getString("URL");
         String extra = row.getString("PARAMS");
         String extra = row.getString("PARAMS");
         Map<String, String> extraparam = StringUtil.json2Map(extra);
         Map<String, String> extraparam = StringUtil.json2Map(extra);
-        
+        String username = extraparam.getOrDefault("username", "");
+        String password = extraparam.getOrDefault("password", "");
+        password = DbQuery.dbDecrypt(password, name);
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
-        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
+        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WildFlyInitialContextFactory.class.getName());
         jndiProperties.put(Context.PROVIDER_URL, url);
         jndiProperties.put(Context.PROVIDER_URL, url);
-        try {
-            log.info("url: " + url);
-            context = new InitialContext(jndiProperties);
-        } catch (NamingException e) {
-            log.error(e,e);
-        }
+        //jndiProperties.put(Context.SECURITY_PRINCIPAL, username);
+        //jndiProperties.put(Context.SECURITY_CREDENTIALS, password);
+        //jndiProperties.put("org.jboss.ejb.client.scoped.context", "true");
+        userconfig = commonconfig.useName(username).usePassword(password);
     }
     }
     
     
     public static String getUssdgwmenuejb(String key){
     public static String getUssdgwmenuejb(String key){
@@ -63,6 +75,9 @@ public class InitializerBean {
     public static boolean containsKey(String key) {
     public static boolean containsKey(String key) {
         return ussdgwmenuejb.containsKey(key);
         return ussdgwmenuejb.containsKey(key);
     }
     }
+    public static Properties getJndiProperties() {
+        return jndiProperties;
+    }
     public static UssdReceiverFunction getInterface(String jndi) {
     public static UssdReceiverFunction getInterface(String jndi) {
         try {
         try {
             final Context context = new InitialContext(jndiProperties);
             final Context context = new InitialContext(jndiProperties);
@@ -73,4 +88,22 @@ public class InitializerBean {
         }
         }
         return null;
         return null;
     }
     }
+    
+    public static String getPropertiesAsString() {    
+        StringWriter writer = new StringWriter();
+        jndiProperties.list(new PrintWriter(writer));
+        return writer.getBuffer().toString();
+    }
+    
+    public static String callUssd(final String key, final String ... params) {
+        try {
+            final Properties prop = jndiProperties;
+            final String jndi = ussdgwmenuejb.get(key);
+            final AuthenticationContext auth = AuthenticationContext.empty().with(MatchRule.ALL, userconfig);
+            return auth.runCallable(new BeanCaller(prop,jndi,Arrays.asList(params)));
+        } catch (Exception e) {
+            log.error(key,e);
+        }
+        return null;
+    }
 }
 }

+ 33 - 30
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/thirdparty/helper/MobileAppThirdPartyHelper.java

@@ -6,6 +6,7 @@ import java.util.Map;
 
 
 import javax.ejb.Remote;
 import javax.ejb.Remote;
 import javax.ejb.Stateless;
 import javax.ejb.Stateless;
+import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.InitialContext;
 
 
 import org.jboss.logging.Logger;
 import org.jboss.logging.Logger;
@@ -31,36 +32,38 @@ public class MobileAppThirdPartyHelper  implements AppManagerFunction {
 		// TODO Auto-generated method stub
 		// TODO Auto-generated method stub
 		
 		
 		try {
 		try {
-		String method  =  syntax.get("method");
-		
-		UssdReceiverFunction clazz = null;
-		
-		
-		if(InitializerBean.containsKey(method)) {
-			
-		    clazz = InitializerBean.getInterface(InitializerBean.getUssdgwmenuejb(method));
-			
-			String[] paramarr = syntax.get("param").split("\\|");
-			List<String> listarr = Arrays.asList(paramarr);
-			
-			//SPECIAL CASE
-			if(method.equals("postpaidinvoices")){
-				
-				String arisreturn = clazz.requestFunc(listarr);
-				log.info(arisreturn);
-			    clazz = InitializerBean.getInterface(InitializerBean.getUssdgwmenuejb("displayinvoices"));
-				
-				listarr =  Arrays.asList(arisreturn);
-				String resp = clazz.requestFunc(listarr);
-				log.info(resp);
-				return new Message(0,0,new JsonResponse(0,resp).toString());	
-			}
-			
-			return new Message(0,0,new JsonResponse(0,clazz.requestFunc(listarr)).toString());
-			
-		}else {
-			return new Message(99,0,new JsonResponse(99,"System is busy").toString());
-		}
+    		String method  =  syntax.get("method");
+    		
+    		//UssdReceiverFunction clazz = null;
+    		
+    		
+    		if(InitializerBean.containsKey(method)) {
+    		    //final Context context = new InitialContext(InitializerBean.getJndiProperties());
+    		    //clazz = (UssdReceiverFunction) context.lookup(InitializerBean.getUssdgwmenuejb(method));
+    			
+    			String[] paramarr = syntax.get("param").split("\\|");
+    			//List<String> listarr = Arrays.asList(paramarr);
+    			
+    			//SPECIAL CASE
+    			if(method.equals("postpaidinvoices")){
+    				log.info(InitializerBean.getPropertiesAsString());
+    				//String arisreturn = clazz.requestFunc(listarr);
+    				String arisreturn = InitializerBean.callUssd(method, paramarr);
+    				log.info(arisreturn);
+    			    //clazz = (UssdReceiverFunction) context.lookup(InitializerBean.getUssdgwmenuejb("displayinvoices"));
+    				
+    				//listarr =  Arrays.asList(arisreturn);
+    				//String resp = clazz.requestFunc(listarr);
+    				String resp = InitializerBean.callUssd("displayinvoices", arisreturn);
+    				log.info(resp);
+    				return new Message(0,0,new JsonResponse(0,resp).toString());	
+    			}
+    			
+    			//return new Message(0,0,new JsonResponse(0,clazz.requestFunc(listarr)).toString());
+    			return new Message(0,0,new JsonResponse(0,InitializerBean.callUssd(method, paramarr)).toString());
+    		}else {
+    			return new Message(99,0,new JsonResponse(99,"System is busy").toString());
+    		}
 		
 		
 		}catch(Exception e) {
 		}catch(Exception e) {
 			log.error("Error: Refid:"+refid+"|" ,e);
 			log.error("Error: Refid:"+refid+"|" ,e);

+ 43 - 13
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/thirdparty/helper/Test.java

@@ -3,29 +3,59 @@ package com.psi.gabontel.mobileapp.thirdparty.helper;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.Properties;
 
 
 import javax.naming.Context;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.InitialContext;
 
 
+import org.wildfly.naming.client.WildFlyInitialContextFactory;
+import org.wildfly.security.auth.client.AuthenticationConfiguration;
+import org.wildfly.security.auth.client.AuthenticationContext;
+import org.wildfly.security.auth.client.MatchRule;
+import org.wildfly.security.sasl.SaslMechanismSelector;
+
 import com.psi.applicationmanager.AppManagerFunction;
 import com.psi.applicationmanager.AppManagerFunction;
 import com.psi.ussd.interfaces.UssdReceiverFunction;
 import com.psi.ussd.interfaces.UssdReceiverFunction;
 
 
 public class Test {
 public class Test {
-    public static void main(String[] args) {
-        if(1==1)
-            appman(args);
-        else
-            ussd(args);
+    public static void main(String[] args) throws Exception {
+        
+        //appman();
+        //ussd();
+        test1();
     }
     }
-    public static void appman(String[] args) {
-        final Hashtable<String, String> jndiProperties = new Hashtable<>();
+    
+    private static void test1() throws Exception {
+        AuthenticationConfiguration common = AuthenticationConfiguration.empty().setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("DIGEST-MD5"));
+        AuthenticationConfiguration superUser = common.useName("ejbuser").usePassword("ejbuser123!");
+        final AuthenticationContext authCtx2 = AuthenticationContext.empty().with(MatchRule.ALL, superUser);
+        final Properties jndiProperties = new Properties();
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
-        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
-        jndiProperties.put(Context.PROVIDER_URL, "http://127.0.0.1:8180/wildfly-services");
-        String jndi = "java:jboss/exported/Test_210_GabonTelMobicashMobileAppHelper/MobileAppThirdPartyHelper!com.psi.applicationmanager.AppManagerFunction";
+        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WildFlyInitialContextFactory.class.getName());
+        //jndiProperties.put(Context.PROVIDER_URL, "remote+http://127.0.0.1:8180");
+        jndiProperties.put(Context.SECURITY_PRINCIPAL, "ejbuser");
+        jndiProperties.put(Context.SECURITY_CREDENTIALS, "ejbuser123!");
+        //jndiProperties.put("org.jboss.ejb.client.scoped.context", "true");
+        jndiProperties.put(Context.PROVIDER_URL, "remote+http://127.0.0.1:8280");
+        String jndi = "java:jboss/exported/Test_110_GabonTelUssdPostpaidInfo/GetListOfInvoicesBean!com.psi.ussd.interfaces.UssdReceiverFunction";
+        jndi =jndi.replace("java:jboss/exported", "");
+        List<String> params = Arrays.asList("01765853");
+        System.out.println(authCtx2.runCallable(new BeanCaller(jndiProperties,jndi,params)));
+    }
+    
+    public static void appman() {
+        final Properties jndiProperties = new Properties();
+        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
+        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WildFlyInitialContextFactory.class.getName());
+        jndiProperties.put(Context.PROVIDER_URL, "remote+http://127.0.0.1:8180");
+        jndiProperties.put(Context.SECURITY_PRINCIPAL, "ejbuser");
+        jndiProperties.put(Context.SECURITY_CREDENTIALS, "ejbuser123!");
+        jndiProperties.put("org.jboss.ejb.client.scoped.context", "true");
+        String jndi = "java:jboss/exported/Test_210_GabonTelMobicashMobileAppHelper//MobileAppThirdPartyHelper!com.psi.applicationmanager.AppManagerFunction";
         try {
         try {
             final Context context = new InitialContext(jndiProperties);
             final Context context = new InitialContext(jndiProperties);
-            AppManagerFunction reference = (AppManagerFunction) context.lookup(jndi.replace("java:jboss/exported", "ejb:") );
+            AppManagerFunction reference = (AppManagerFunction) context.lookup(jndi.replace("java:jboss/exported", "") );
             HashMap<String,String> map = new HashMap<String,String>();
             HashMap<String,String> map = new HashMap<String,String>();
             map.put("key", "MNFO1");
             map.put("key", "MNFO1");
             map.put("method", "postpaidinvoices");
             map.put("method", "postpaidinvoices");
@@ -37,7 +67,7 @@ public class Test {
         }
         }
         System.exit(0);
         System.exit(0);
     }
     }
-    public static void ussd(String[] args) {
+    public static void ussd() {
         final Hashtable<String, String> jndiProperties = new Hashtable<>();
         final Hashtable<String, String> jndiProperties = new Hashtable<>();
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
         jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
         jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
@@ -46,7 +76,7 @@ public class Test {
         try {
         try {
             final Context context = new InitialContext(jndiProperties);
             final Context context = new InitialContext(jndiProperties);
             UssdReceiverFunction reference = (UssdReceiverFunction) context.lookup(jndi.replace("java:jboss/exported", "ejb:") );
             UssdReceiverFunction reference = (UssdReceiverFunction) context.lookup(jndi.replace("java:jboss/exported", "ejb:") );
-            System.out.println(reference.requestFunc(Arrays.asList(new String[] {"01765853"})));
+            System.out.println(reference.requestFunc(Arrays.asList("01765853")));
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }

+ 5 - 7
GabonTelMobicashMobileAppHelper/src/main/resources/wildfly-config.xml

@@ -14,23 +14,21 @@
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     See the License for the specific language governing permissions and
     limitations under the License.
     limitations under the License.
--->
+
 <configuration>
 <configuration>
     <authentication-client xmlns="urn:elytron:1.0">
     <authentication-client xmlns="urn:elytron:1.0">
         <authentication-rules>
         <authentication-rules>
-            <rule use-configuration="default-config"/>
+            <rule use-configuration="default"/>
         </authentication-rules>
         </authentication-rules>
         <authentication-configurations>
         <authentication-configurations>
-            <configuration name="default-config">
+            <configuration name="default">
+                <sasl-mechanism-selector selector="DIGEST-MD5"/>
                 <set-user-name name="ejbuser"/>
                 <set-user-name name="ejbuser"/>
                 <credentials>
                 <credentials>
                     <clear-password password="ejbuser123!"/>
                     <clear-password password="ejbuser123!"/>
                 </credentials>
                 </credentials>
-                <sasl-mechanism-selector selector="DIGEST-MD5"/>
-                <providers>
-                    <use-service-loader />
-                </providers>
             </configuration>
             </configuration>
         </authentication-configurations>
         </authentication-configurations>
     </authentication-client>
     </authentication-client>
 </configuration>
 </configuration>
+-->