Ver código fonte

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

anthony.moreno 7 anos atrás
pai
commit
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>
         <finalName>Test_210_GabonTelMobicashMobileAppHelper</finalName>
     </build>
-	<dependencyManagement>
+<!--
+    <dependencyManagement>
 	   <dependencies>
 	      <dependency>
 	         <groupId>org.wildfly</groupId>
 	         <artifactId>wildfly-ejb-client-bom</artifactId>
-	         <version>12.0.0.Final</version>
+	         <version>11.0.0.CR1</version>
 	         <type>pom</type>
 	         <scope>import</scope>
 	      </dependency>
 	   </dependencies>
 	</dependencyManagement>
+  -->
 	<dependencies>
         <dependency>
             <groupId>org.wildfly</groupId>
@@ -35,30 +37,6 @@
             <type>pom</type>
 	         <scope>provided</scope>
         </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>
             <groupId>org.jboss.logging</groupId>
 		    <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;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
 
 import javax.annotation.PostConstruct;
 import javax.ejb.Singleton;
@@ -12,9 +16,15 @@ import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
 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.DataRowCollection;
+import com.psi.common.db.DbQuery;
 import com.psi.common.db.DbWrapper;
 import com.psi.common.util.StringUtil;
 import com.psi.ussd.interfaces.UssdReceiverFunction;
@@ -24,8 +34,10 @@ import com.psi.ussd.interfaces.UssdReceiverFunction;
 public class InitializerBean {
     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> 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
     public void initialize() {
         DbWrapper db = new DbWrapper("java:jboss/datasources/UssdDbClient");
@@ -36,7 +48,7 @@ public class InitializerBean {
             DataRow row = iterator.next();
             
             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);
         }
         db = DbWrapper.getInstance();
@@ -45,16 +57,16 @@ public class InitializerBean {
         String url = row.getString("URL");
         String extra = row.getString("PARAMS");
         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.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
+        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WildFlyInitialContextFactory.class.getName());
         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){
@@ -63,6 +75,9 @@ public class InitializerBean {
     public static boolean containsKey(String key) {
         return ussdgwmenuejb.containsKey(key);
     }
+    public static Properties getJndiProperties() {
+        return jndiProperties;
+    }
     public static UssdReceiverFunction getInterface(String jndi) {
         try {
             final Context context = new InitialContext(jndiProperties);
@@ -73,4 +88,22 @@ public class InitializerBean {
         }
         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.Stateless;
+import javax.naming.Context;
 import javax.naming.InitialContext;
 
 import org.jboss.logging.Logger;
@@ -31,36 +32,38 @@ public class MobileAppThirdPartyHelper  implements AppManagerFunction {
 		// TODO Auto-generated method stub
 		
 		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) {
 			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.HashMap;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.Properties;
 
 import javax.naming.Context;
 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.ussd.interfaces.UssdReceiverFunction;
 
 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.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 {
             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>();
             map.put("key", "MNFO1");
             map.put("method", "postpaidinvoices");
@@ -37,7 +67,7 @@ public class Test {
         }
         System.exit(0);
     }
-    public static void ussd(String[] args) {
+    public static void ussd() {
         final Hashtable<String, String> jndiProperties = new Hashtable<>();
         //jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
         jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
@@ -46,7 +76,7 @@ public class Test {
         try {
             final Context context = new InitialContext(jndiProperties);
             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) {
             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.
     See the License for the specific language governing permissions and
     limitations under the License.
--->
+
 <configuration>
     <authentication-client xmlns="urn:elytron:1.0">
         <authentication-rules>
-            <rule use-configuration="default-config"/>
+            <rule use-configuration="default"/>
         </authentication-rules>
         <authentication-configurations>
-            <configuration name="default-config">
+            <configuration name="default">
+                <sasl-mechanism-selector selector="DIGEST-MD5"/>
                 <set-user-name name="ejbuser"/>
                 <credentials>
                     <clear-password password="ejbuser123!"/>
                 </credentials>
-                <sasl-mechanism-selector selector="DIGEST-MD5"/>
-                <providers>
-                    <use-service-loader />
-                </providers>
             </configuration>
         </authentication-configurations>
     </authentication-client>
 </configuration>
+-->