当前位置: 首页 > 知识库问答 >
问题:

已创建并部署mdb项目,但无法从独立程序进行查找

冀越
2023-03-14

我已经创建了一个MDB bean并在glassfish 4中进行了部署,并且成功地部署了应用程序,但是我正在尝试使用一个独立的客户端将消息放入队列中。我得到了这个错误。

**java.lang.NullPointerException在com.sun.enterprise.naming.impl.serialcontext.getorb(serialcontext.java:347)javax.naming.naming.exception:在serialcontext[myenv={java.naming.provider.url=iiop:/localhost:3700,java.naming.factor.initial=com.sun.enterprise.naming.serialinitcontextfactory,

原因:javax.naming.namingException:无法获取SerialContext的SerialContextProvider[myenv={java.naming.provider.url=IIOP:/localhost:3700,java.naming.factory.initial=com.sun.enterprise.naming.serialInitContextFactory,java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.jndistateFactoryImpl,

MDB类代码为::

    package test;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/myQueue")
    ,
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
    ,
        @ActivationConfigProperty(propertyName = "connectionFactoryLookup", propertyValue = "jms/myConnectionFactory")
})
public class testMDB1 implements MessageListener {

    public testMDB1() {
    }

    @Override
    public void onMessage(Message message) {
        if (message instanceof TextMessage) {
            TextMessage t = (TextMessage) message;
            try {
                System.out.println("ye le " + t.getText());
            } catch (JMSException ex) {
                Logger.getLogger(TestMDB.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

}

客户端文件为

package test;
import java.util.Properties;
import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSProducer;
import javax.jms.Queue;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class TestClient {

    public static void main(String[] args) {

        try {

            final Properties env = new Properties();
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
            env.put(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
            env.put(Context.PROVIDER_URL, "iiop://localhost:3700");
            Context remoteContext = new InitialContext(env);
            System.out.println("remote context" + remoteContext.getEnvironment());
            Queue queue = (Queue) remoteContext.lookup("jms/myQueue");
            JMSContext jmsContext = ((ConnectionFactory) remoteContext.lookup("jms/myConnectionFactory")).createContext();
            JMSProducer producer = jmsContext.createProducer();
            producer.send(queue, "hello ");
            System.out.println("1. Sent TextMessage to the Queue");

        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}

我添加了gf-client.jar、orb-iiop.jar和appserv-rt.jar,但没有任何东西可以解决我的问题。

共有1个答案

子车芷阳
2023-03-14

我了解到glassfish 4.1存在本地客户端无法连接到MDB的缺陷。我在两个ejb项目中尝试了同样的方法,结果很好。

 类似资料:
  • 独立部署即为在后端运行程序,让程序跑在后台。 linux 在 linux 下面部署,我们可以利用 nohup 命令,把应用部署在后端,如下所示: nohup ./beepkg & 这样你的应用就跑在了 Linux 系统的守护进程 Windows 在 Windows 系统中,设置开机自动,后台运行,有如下几种方式: 制作 bat 文件,放在“启动”里面 制作成服务

  • 我正在试图弄清楚如何构建一个Spring Boot独立应用程序。当然,要让东西自动连线需要一些初始的上下文起点。如果我只是尝试自动生成一个类来运行一个作业,那么即使我将它设置为静态,它也是空的。 有没有办法在一个独立的非Web应用程序中使用Spring@Services? 因此,首先将静态JobRunnerService连接到运行MyApplication的主程序,JobRunner(Servic

  • 我正在尝试将一个.ear应用程序部署到WildFly10.1Final。ear有2个嵌套的.war文件。war文件中没有“jboss-web.xml”文件。 信息[org.jboss.as.server.deployment.scanner](DeploymentScanner-Threads-1)WFLYDS0004:在部署目录中找到MyApp.ear。要触发部署,请创建一个名为myapp.ea

  • 无法将快照工件部署到Nexus存储库。我一直收到返回代码400。无法部署项目:无法传输项目网络。iin:iin-web-0.0.1-snapshot:jar:iin-parent从/到快照(http://localhost:8081/nexus/content/repositories/snapshots/net/iin/iin-web-0.0.1-snapshot/iin-parent/iin-

  • 这是一个简单的spring boot应用程序。我的应用程序可以在本地工作,但在我将它作为war文件部署到heroku后就不工作了。当我在本地计算机上访问http://127.0.0.1:8080/时,得到的输出为 null null 当我访问http://127.0.0.1:8080/hello时,我得到的回复是简单的“嗨”。所以它在我的本地机器上按我的预期工作,但当我访问我的heroku应用程序

  • 我实现了一个Scalatra servlet,现在想要创建一个可执行的jar,就像本教程中所描述的那样:http://www.scalatra.org/2.2/guides/deployment/standalone.html 我使用IntelliJ IDEA和Scala插件进行开发,并使用sbt来构建和运行我的servlet(我使用sbt-想法来生成项目文件)。我的问题是,当我尝试编译我的项目时