我是 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();
}
}
感谢帮助,我是初学者
您的客户端类路径上需要 com.mamisa.MamisoaRemote
你好哥们我也有同样的问题