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

Weblogic下的EJB bean JNDI名称不清楚

索卓
2023-03-14

我用weblogic 10.3.6和EJB 3.0做了一个小例子。定义SimpleService类,定义weblogic-ejb-jar.xml以便将SimpleService类映射到JNDI名称,将其打包为EAR文件中的EJB组件并部署在服务器上。部署成功,我可以看到名为SimpleServiceBean的ejb bean。之后,使用独立的应用程序连接到webloigc服务器通过初始化上下文与所有必要的环境属性我试图查找那个bean。我假设它将在名称ejb/SimpleService下可用,但在该名称下找不到它,只有在我查看JNDI树名称后,我才发现它在名称SimpleService#ds/base/ejb/SimpleService下可用。帮我弄明白是怎么回事?我应该如何配置ejb bean,以便它将在ejb/SimpleService下可用,如官方weblogic手册中所述?或者这是EJB bean的正确JNDI名称?

我的类和配置是:

ds。基础ejb。SimpleServiceBean:

@Stateless(mappedName = "ServiceBean")
@TransactionAttribute(NEVER)
@ExcludeDefaultInterceptors
@Remote(SimpleService.class)
public class SimpleServiceBean implements SimpleService {
...
}

WebLogicEJBJAR。xml

<weblogic-ejb-jar>
    <weblogic-enterprise-bean>
        <ejb-name>ServiceBean</ejb-name>
        <jndi-name>ejb/ServiceBean</jndi-name>
        <enable-call-by-reference>True</enable-call-by-reference>
    </weblogic-enterprise-bean>
</weblogic-ejb-jar>

application.xml:

<application>
    <display-name>web-app-ear</display-name>
    <module>
        <ejb>app-ejb-1.0-SNAPSHOT.jar</ejb>
    </module>
</application>

然后尝试从独立获取:

InitialContext context = new InitialContext(env);
SimpleService simpleService = (SimpleService)          
context.lookup("SimpleService#ds/base/ejb/SimpleService");
assert simpleService != null

共有2个答案

彭飞虎
2023-03-14

用这个。

@Stateless(mappedName="UserFacade")
public class UserFacadeImpl {

//......
}


Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
InitialContext ctx=new InitialContext(p);
userFacade=(UserFacade)ctx.lookup("UserFacade#com.webservices.facade.UserFacade");

希望能有帮助。

云胤
2023-03-14

有一个关于全球门户JNDI名称的好常见问题glassfish.orghttp://glassfish.java.net/javaee5/ejb/EJB_FAQ.html" target="_blank">html#SessionBeanGlobalJNDINameAssignment最好不要分配一个jndi名称,而是依赖于自EE 5定义的名称(例如JNDI名称)。SimpleService#ds/base/ejb/SimpleService)

如果将jndi名称配置添加到WebLogicEJB jar中。xml您实际上可以将其作为ejb/ServiceBean提供,但您还必须在EJBJAR中定义它的“老式”样式。xml。更多关于WebLogicEJBJAR的信息。可以找到xmlhttp://docs.oracle.com/cd/E23943_01/web.1111/e13719/ejb_jar_ref.htm

orcl文档中也有关于dd的良好概述。http://docs.oracle.com/cd/E23943_01/web.1111/e13719/understanding.htm#EJBPG129

假设您正在使用10.3。x服务器版本。。。

 类似资料:
  • 我使用以下注释将无状态ejb公开为web服务: 为了在weblogic中定义上下文根,我在weblogic webservices中定义了web服务。xml部署描述符如下: 然而,weblogic在部署时抛出以下错误: 知道我做错了什么吗?这是我的web应用程序中唯一的bean/服务,在weblogic(本地实例)中没有部署其他应用程序。

  • 问题内容: 是否可以让您的用户下载其他名称的文件? 例如,有一个名为“ 4324ffsd34.jpg”的文件。我希望人们通过download.php以不同的名称(例如“ filetodownload.jpg”)下载它,而不重命名原始文件。 问题答案: 当然,请使用Content-disposition 标头 如果您希望提供默认文件名,而不是自动下载,那么这似乎可行。

  • 我目前正在开发一个weblogic 10应用服务器,它安装了几个EAR。我收到一个请求,要求更改某些AP的应用程序名称,因为它们出现在 家 我去了合适的计划。xml并使用适当的名称更改,重新启动了域,但名称没有更改。 有什么想法吗?

  • 在图片中,我想更改应用程序名称仅"应用程序"强文本 我可以更改或更新部署的应用程序名称而不停止托管服务器? 一段时间后的其他信息。如果您想在weblogic wlst控制台中更改应用程序名称,它会接收错误消息。 这表明weblogic Application ationName属性是只读属性。

  • 我有以下wlst脚本: 结果是错误: WLS:/离线 我怎样才能解决这个问题?

  • 使用WLS 12,我有以下EJB定义: 我也有以下定义: