Сбой удаленного поиска EJB в WebSphere Liberty 18.0.0.3 - PullRequest
0 голосов
/ 15 марта 2019

Сбой поиска EJB в WebSphere Liberty 8.0.0.3:

Я создал EJB со следующим кодом и развернул в WebSphere Liberty 8.0.0.3.

ITestEJBRemoteInterface.java

package ejb31.test;

import javax.ejb.EJB;
import javax.ejb.Remote;

@Remote
@EJB(name="ejb/checkName")
public interface ITestEJBRemoteInterface
{ 
    public boolean checkNames(String fsName);
}

TestEJB.java:

package ejb31.test;
import java.util.Arrays;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Remote;
import javax.ejb.Stateless;
/** * Session Bean implementation class TestEJB */ 
@Stateless
@EJB(name="ejb/checkName")
public class TestEJB implements ITestEJBRemoteInterface 
{
    List<String> moListOfNames = Arrays.asList("Kevin","Jiten","Martina","Brian"); 
    /** * Default constructor. */
    public TestEJB() 
    { 

    } 
    /** * Find if the passed name is present in the default list of names 
     * 
     * 
     * 
     * @return */ 
    public boolean checkNames(String fsName)
    { 
        boolean lboolNamePresent = false; 
        if(fsName != null) 
        { 
            lboolNamePresent = moListOfNames.contains(fsName); 
        } 
        return lboolNamePresent; 
    }
}

jar.xml-EJB

<?xml version="1.0" encoding="UTF-8"?>
 <ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1"> 
 <display-name> TestEJB3.1 </display-name> 
 </ejb-jar>

Развертывание EJB прошло успешно, и файлы журнала выбрасывают расположение привязки:

Java: глобальный / TestEJB3.1EAR / TestEJB3.1 / TestEJB ejb31.test.ITestEJBRemoteInterface

Проблема заключается в вызове ejb. WebSphereClient.java

package com.client;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class WebSphereClient {
    public static void main(String[] args) {

        String jndiPath = "corbaname:rir:#ejb/global/TestEJB3.1EAR/TestEJB3.1/TestEJB!ejb31.test.ITestEJBRemoteInterface";
        String provider = "corbaname:iiop:localhost:2809";

        Properties jndiLookupProps = new Properties();
        jndiLookupProps.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
         com.ibm.websphere.naming.PROPS.INITIAL_CONTEXT_FACTORY);
        jndiLookupProps.put(javax.naming.Context.PROVIDER_URL, provider);
        try {
            Object found = new InitialContext().lookup(jndiPath);
        } catch (NamingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
}

Выдает ошибку: javax.naming.InvalidNameException: компонент имени "TestEJB! ejb31.test.ITestEJBRemoteInterface" нарушает синтаксис имени INS. Существует несколько неэкранированных разделителей ID / KIND (".").

Когда я попытался выбраться из jndiPath, как:

jndiPath = "corbaname:rir:#ejb/global/TestEJB3%5c.1EAR/TestEJB3%5c.1/TestEJB!ejb31%5c.test%5c.ITestEJBRemoteInterface";

или

jndiPath = "corbaname:rir:#ejb/global/TestEJB3\.1EAR/TestEJB3\.1/TestEJB!ejb31\.test\.ITestEJBRemoteInterface";

или

jndiPath = "corbaname:rir:#ejb/global/TestEJB3\\.1EAR/TestEJB3\\.1/TestEJB!ejb31\\.test\\.ITestEJBRemoteInterface";

Выдает ту же ошибку. Как правильно вызвать EJB, развернутый в свободе Websphere, с помощью удаленного клиента?

...