Tag: ejb

Glassfish上EJB的可移植JNDI语法查找

以前的尝试是让Netbeans将一个EJB模块部署到Netbeans可以访问的Glassfish服务器上,该模块构建为JAR而不是EAR。 但是,使用asadmin通过CLI将JAR部署到Glassfish 可能会遇到错误 。 EAR通过CLI进行部署而没有问题 – 但是,EJB的JNDI名称似乎不起作用。 差异是什么? 32.4.1.1可移植JNDI语法 三个JNDI名称空间用于可移植的JNDI查找:java:global,java:module和java:app。 java:global JNDI名称空间是使用JNDI查找查找远程企业bean的可移植方式。 JNDI地址具有以下forms:java:global [/ application name] / module name / enterprise bean name [/ interface name]应用程序名称和模块名称默认为应用程序和模块的名称减去文件扩展名。 仅当应用程序打包在EAR中时,才需要应用程序名称。 仅当企业bean实现多个业务接口时,才需要接口名称。 http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro004.htm 查找此bean的正确语法是什么? 是java:global/HelloEAR/HelloEAR-ejb/greetings.GreetingsBeanRemote ? 我尝试了不止一些变种而没有成功。 部署应用程序: thufir@dur:~$ thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin list-applications HelloEAR Command list-applications executed successfully. thufir@dur:~$ thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin undeploy HelloEAR Command undeploy executed successfully. thufir@dur:~$ thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin […]

@ Singleton,@ Start,@ PostConstruct不适用于EJB3.1和Glassfishv3.0.1

我有这个设置的问题,我甚至无法查看日志。 这是我的@Singleton @Startup EJB: @Singleton @Startup @DependsOn(“SchedulerEJB”) public class SchedulerStartUp { private static Logger log = Logger.getLogger(SchedulerStartUp.class); @EJB SchedulerEJB schedEJB; @PostConstruct public void atStartup() { log.info(“startUp”) System.out.println(“startUp”); schedEJB.cancelTimer(“EBlastScheduler”); schedEJB.createTimer(“*/1”, “*”, “*”); } } SchedulerEJB : @Stateless public class SchedulerEJB { @Resource TimerService timerService; public cancelTimer(String timerInfo){/*…*/} public createTimer(String sec, String min, String hour) {/*…*/} @Timeout […]

你怎么能在ejb电话上获得呼叫IP地址?

如果java客户端在不同的服务器上调用远程EJB,那么如何获取客户端IP地址? 请注意,从服务器获取它很重要,因为客户端可能位于NAT防火墙后面,在这种情况下,我们需要公共IP地址。 注意:虽然它最好是一个通用的解决方案,但至少我可以使用从JBoss 4.2.2上的EJB2调用中检索IP地址的解决方案。

从另一个EAR访问本地会话Bean?

如何在另一个EAR中调用EAR中的本地会话Bean,这两个EAR都部署在同一个Glassfish v3域中? 这是结构: Glassfish v3 Domain1 EAR1 EAR1-EJB.jar class TestSessionBean <– @Stateless common.jar interface TestSessionLocal <– @Local EAR2 EAR2-EJB.jar class TestSessionBeanClient <– @Singleton, @LocalBean common.jar interface TestSessionLocal <– @Local TestSessionBean实现了TestSessionLocal,两个EAR都有common.jar。 我需要使用TestSessionBeanClient中的TestSessionBean。 我想利用本地会话bean因为性能。 我知道我不能在TestSessionBeanClient中使用简单的@EJB调用,所以我尝试像这样查找: InitialContext ic = new InitialContext(); TestSessionLocal tsl = ic.lookup(“java:global/EAR1/EAR1-EJB/TestSessionBean!org.test.TestSessionLocal”); 这将抛出ClassCastException,因为返回的对象不是TestSessionLocal,而是代理类,如: TestSessionLocal_1389930137 为了能够调用它的方法,我必须做反思才能找到它的方法。 请帮忙。 先谢谢你。

客户端的@EJB注释

使用NetBeans,我在包含main()的类中执行以下操作,它可以工作: import javax.ejb.EJB; public class Master { @EJB TestBeanARemote x; public static void main(String[] args) { Master m = new Master(); m.doStuff(); } //doStuff includes x, but it works, so who cares. … 但是,如果我在被调用的类中执行此操作,则会失败。 似乎被调用的类要求我避免使用注释,而是使用整个InitialContext()设置。 String testRun(String arg) { InitialContext ic; try { ic = new InitialContext(); x = (TestBeanARemote) ic.lookup(“com.bnncpa.testing.TestBeanARemote”); return x.testRun(arg); } 完整的,失败的副本如下: […]

注入HttpServletRequest

我正在使用ejb 3并尝试@Inject HttpServletRequest,但在部署时我发生了exception。 码: @Inject private HttpServletRequest httpRequest; 例外: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [HttpServletRequest] with qualifiers [@Default] at injection point [[field] @Inject private com.kmware.ttk.highway.beans.session.UserSessionBean.httpRequest] 我该怎么办?

没有使用拦截器绑定调用拦截器方法

我正在使用Java EE 6和Jboss AS7.1并尝试使用拦截器绑定( 来自jboss站点的示例 )。 我有一个InterceptorBinding注释: @InterceptorBinding @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) public @interface GeoRestrictedEquipment { } 拦截器: @GeoRestrictedEquipment @Interceptor public class GeoRestrictedEquipmentInterceptor { @EJB EquipmentDao equipmenttDao; @EJB SecurityService securityService; @AroundInvoke public Object checker(InvocationContext ctx) throws Exception { Integer id = (Integer) ctx.getParameters()[0]; Equipment equipment = equipmenttDao.findById(id); GeoChecker.check(equipment.getSite(), securityService.getUser()); return ctx.proceed(); } } 还有一个豆子: […]

如何编写Java EE / EJB Singleton?

前一天,我的应用程序是一个EAR,包含一个WAR,一个EJB JAR和几个实用程序JAR文件。 我在其中一个实用程序文件中有一个POJO单例类,它工作正常,并且全世界都很好: EAR |— WAR |— EJB JAR |— Util 1 JAR |— Util 2 JAR |— etc. 然后我创建了第二个WAR,并发现(艰难的方式)每个WAR都有自己的ClassLoader,因此每个WAR都会看到不同的单例,并且事情从那里分解。 这不太好。 EAR |— WAR 1 |— WAR 2 |— EJB JAR |— Util 1 JAR |— Util 2 JAR |— etc. 所以,我正在寻找一种方法来创建一个可以跨WAR运行的Java单例对象(跨ClassLoaders?)。 在我发现JBoss 5.1似乎不支持该注释(作为EJB 3.1的一部分添加)之前,@ @Singleton EJB注释似乎很有希望。 我错过了什么 – 我可以将@Singleton与JBoss 5.1一起使用吗? 目前无法升级到JBoss AS 6。 或者,我很高兴不必使用EJB来实现我的单例。 […]

javax.security.sasl.SaslException:Authentic从远程客户端连接到Jboss 7服务器时失败

我有独立的Java客户端(在eclipse中运行),我希望连接到外部服务器。 如果服务器是localhost,那么我看不出任何问题。 但是每当我尝试连接到外部服务器时,我总是会遇到以下exception – JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed – Could not register a EJB receiver for connection to remote://10.160.148.61:4447 java.lang.RuntimeException: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed 我试图使用JNDI从远程客户端执行EJB调用的步骤 exception告诉我,与身份validation相关的配置文件有问题。 这是我的ejb_client_properties文件 remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false remote.connections=default remote.connection.default.host=10.160.148.61 remote.connection.default.port = 4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false remote.connection.default.username=tan remote.connection.default.password=f2b1c3c7d3f1e224cbf6508494cf0418 注意:用户tan将添加到服务器上的mgt.user.properties文件中。 我使用add-user.bat在服务器中添加用户。 我还添加了一个应用程序用户。 我使用相同的凭据传递给服务器。 我想不出别的什么。 我的ejb电话如下: final […]

在JBoss 7.1上使用Seam 2.2 App?

我们在JBoss 5.1上部署了JBoss Seam 2.2应用程序,并将PostgreSQL作为数据库。 它使用EJB,JPA(Hibernate),JSF(Richfaces和Primefaces),Servlet和JMS队列和主题。 最近,我们决定将平台迁移到JBoss 7.1,以利用其较低的开销,并与技术变化保持同步。 可以在JBoss 7.1上运行Seam 2.2应用程序吗? 我意识到Hibernate / JPA版本是不同的,我假设JSF版本也是如此。 有办法弥补这个吗? 我可能需要对我们的代码和配置进行哪些更改才能在此平台上运行它?