ClassNotFoundException - ejb 中的 javax.naming.NamingException 错误与 Wildfly 29

问题描述 投票:0回答:2

我是 java bean 的初学者,尤其是企业 java bean 所以我阅读了一些文档并创建了一个简单的服务器应用程序并使用 wildfly 29 部署它

然后我做了一个客户端应用程序来测试它 但出现了这个错误:

Oct 06, 2023 1:36:10 PM org.jboss.logmanager.JBossLoggerFinder getLogger
ERROR: The LogManager accessed before the "java.util.logging.manager" system property was set to "org.jboss.logmanager.LogManager". Results may be unexpected.
Exception in thread "main" javax.naming.NamingException: Failed to lookup [Root exception is java.lang.ClassNotFoundException: com.mamisa.MamisoaRemote]
        at org.wildfly.naming.client.util.NamingUtils.namingException(NamingUtils.java:171)
        at org.wildfly.naming.client.remote.RemoteClientTransport.lookup(RemoteClientTransport.java:291)
        at org.wildfly.naming.client.remote.RemoteContext.lambda$lookupNative$0(RemoteContext.java:190)
        at org.wildfly.naming.client.NamingProvider.performExceptionAction(NamingProvider.java:222)
        at org.wildfly.naming.client.remote.RemoteContext.performWithRetry(RemoteContext.java:100)
        at org.wildfly.naming.client.remote.RemoteContext.lookupNative(RemoteContext.java:188)
        at org.wildfly.naming.client.AbstractFederatingContext.lookup(AbstractFederatingContext.java:74)
        at org.wildfly.naming.client.store.RelativeFederatingContext.lookupNative(RelativeFederatingContext.java:58)
        at org.wildfly.naming.client.AbstractFederatingContext.lookup(AbstractFederatingContext.java:74)
        at org.wildfly.naming.client.AbstractFederatingContext.lookup(AbstractFederatingContext.java:60)
        at org.wildfly.naming.client.AbstractFederatingContext.lookup(AbstractFederatingContext.java:66)
        at org.wildfly.naming.client.WildFlyRootContext.lookup(WildFlyRootContext.java:144)
        at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
        at App.main(App.java:19)
Caused by: java.lang.ClassNotFoundException: com.mamisa.MamisoaRemote
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:467)
        at org.jboss.marshalling.AbstractClassResolver.loadClass(AbstractClassResolver.java:129)
        at org.jboss.marshalling.AbstractClassResolver.resolveProxyClass(AbstractClassResolver.java:141)
        at org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:1036)
        at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1381)
        at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:298)
        at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:231)
        at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
        at org.wildfly.naming.client.remote.RemoteClientTransport.lookup(RemoteClientTransport.java:275)
        ... 12 more

服务器代码

package com.mamisa;
import jakarta.ejb.Remote;

@Remote
public interface MamisoaRemote{
    public void hello();
}
package com.mamisa;
import jakarta.ejb.Remote;
import jakarta.ejb.Stateless;

@Stateless
public class Mamisoa implements MamisoaRemote{
    @Override
    public void hello() {
        System.out.println("hello");
    }
}

我通过将其制作为 jar 并将其部署到 wildfly 服务器中来部署它 然后我制作了以下客户端应用程序

import java.util.Hashtable;
import java.util.Properties;

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

import com.mamisa.MamisoaRemote;

public class App{
    public static void main(String[] args) throws NamingException {
        final Hashtable jndiProperties = new Hashtable();
        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
        jndiProperties.put(Context.PROVIDER_URL, "remote+http://127.0.0.1:8080/");

        Context context = new InitialContext(jndiProperties);
        MamisoaRemote mr = (MamisoaRemote) context.lookup("mamisosa/Mamisoa!com.mamisa.MamisoaRemote");
        mr.hello();
    }
}

感谢帮助,我是初学者

java ejb wildfly javabeans
2个回答
0
投票

您的客户端类路径上需要 com.mamisa.MamisoaRemote


0
投票

你好哥们我也有同样的问题

© www.soinside.com 2019 - 2024. All rights reserved.