Tag: rmi

无法使用JBOSS 7.x中的JMX连接到Tigase

我在使用JBOSS 7.x中的JMX连接到Tigase时遇到问题。 对于连接我使用下一个代码: import java.util.Hashtable; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; JMXServiceURL u = new JMXServiceURL(“service:jmx:rmi:///jndi/rmi://” + HOST_NAME + “:” + PORT + “/jmxrmi”); Hashtable env = new Hashtable(); String[] credentials = new String[] {“login”,”pass”}; env.put(JMXConnector.CREDENTIALS, credentials); JMXConnector jmxConnector = JMXConnectorFactory.connect(u, env); 在tigase init.properties我添加了 –monitoring=jmx:9050,http:9080,snmp:9060 在我添加的java选项的tigase启动脚本中 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname= 有趣的是,它都是从简单的Java应用程序开始,但不能从jboss开始 我使用java openJDK7和JBOSS AS 7.0.2,当我尝试创建连接时,我在JMXConnectorFactory.connect(u,env)上得到下一个错误: java.io.IOException: Failed […]

有没有办法在java应用程序中完全禁用RMI?

在我们的应用程序中,远程过程调用是通过自己的基于netty的命令调度程序系统解决的。 我们有很多模块(大约20个),我想在单独的jvm-s中运行所有模块。 我的问题是,RMI为每个JVM产生大约17个线程。 我根本不需要RMI(据我所知)。 我可以完全禁用jvm的RMI吗? 或者至少以不使用这么multithreading的方式配置它?

Spring + Websphere 8.5:无法查找JNDI名称

有一个运行XA Datasource的Websphere AS 8.5。 还有一个Spring应用程序必须在此环境中工作并连接到数据源。 应用程序上下文由servlet加载,应用程序使用RmiExporters提供对某些服务的RMI访问(在单独的线程中共享),所有DAO的方法都用@Transactional标记。 如果我尝试从主线程向数据库写一些东西(例如在任何类的初始化期间),它可以正常工作。 但是如果我尝试通过RMI调用来编写(或使用HQL SELECT-query读取),我会看到一个exception: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [java:comp/websphere/ExtendedJTATransaction] at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:156) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:152) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getTransaction(WebSphereExtendedJtaPlatform.java:124) at org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getStatus(WebSphereExtendedJtaPlatform.java:119) at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:73) at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:115) at org.hibernate.service.jta.platform.internal.TransactionManagerBasedSynchronizationStrategy.canRegisterSynchronization(TransactionManagerBasedSynchronizationStrategy.java:56) at org.hibernate.service.jta.platform.internal.AbstractJtaPlatform.canRegisterSynchronization(AbstractJtaPlatform.java:148) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:240) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.pulse(TransactionCoordinatorImpl.java:268) at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1202) at org.hibernate.ejb.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:178) at org.hibernate.ejb.EntityManagerImpl.(EntityManagerImpl.java:89) at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:179) at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:174) at com.ibm.ws.jpa.management.JPAEMFactory.createEntityManager(JPAEMFactory.java:297) at org.springframework.orm.jpa.EntityManagerFactoryUtils.doGetTransactionalEntityManager(EntityManagerFactoryUtils.java:202) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:211) at […]

单一RMI服务的简单入口点?

我有几个服务导出RMI接口。 他们曾经通过创建自己的注册表(使用LocateRegistry.createRegistry )并在那里绑定它来提供此function。 但是,当服务作为单独的应用程序在同一个VM(Tomcat)中运行时,这变得不可能,因为由于某种原因,那里只能有一个注册表。 我通过使用所有服务的中央注册表来解决这个问题。 即便如此,我对注册表的多对象注册表角色,只是它的入口点设施并不感兴趣。 然而,中央注册表引入了更多的复杂性(例如,它必须首先启动,它必须具有它注册的服务接口)。 有没有办法让每个服务独立地提供其RMI接口的入口点,同时让它们在同一个VM中运行(这是托管细节,而不是设计的一部分)?

java rmi身份validation和安全性。 exportObject使它公开?

问题: 当您使用UnicastRemoteObject.exportObject(instance) 。 该实例现在是否可供所有客户公开使用。 即使找到它的端口需要一点点棘手。 情况就是这样: 我有一个java RMI客户端/服务器设置,我想添加一些身份validation。 允许客户端在任何其他RPC调用工作之前使用用户/传递组合。 我在网上找到了一个简单的建议,起初看起来不错。 interface LoginService implements Remote { public MainService login(String username, char[] password) throws RemoteException; } interface MainService implements Remote { /* all my real rpc calls go here */ } 我们的想法是,创建一个远程对象来体现对RPC的经过身份validation的访问。 并通过执行身份validation的第一层访问它。 LoginServiceImpl.login()必须看起来像那样。 public MainService login(String username, char[] password) throws RemoteException { /* verify username and […]

RMI服务器与RMI注册表

在Oracle关于Java RMI 的FAQ页面上 ,它说: 虽然Java远程方法调用(Java RMI)服务器理论上可以在任何主机上,但它通常与运行注册表的主机相同,并且位于不同的端口上。 即使服务器错误地了解其主机名或IP地址(或者主机名无法由客户端解析),它仍将使用错误的主机名导出其所有对象,但每次尝试时都会看到exception接收其中一个对象。 我不明白RMI服务器和RMI注册表之间的区别。 我以为他们是一回事。 如果RMI注册表不是某种服务器,它如何工作?

RMI和JMX套接字工厂

我正在尝试在我的Java应用程序中启动嵌入式JMX服务器。 我想为RMI注册表和实际的RMI流量使用相同的端口(如果你愿意,可以使用JMX流量)。 显然这是可能的,因为RMI注册表本身只是一个远程对象 。 增加的难点是我需要使用Socket Factories,因为我需要绑定到特定的NIC。 我从以下开始: int registryPort = 3012; int jmxPort = 3012; // use the same port 这是我的服务器套接字工厂。 相当直接的东西: public class MyRMIServerSocketFactory implements RMIServerSocketFactory { private final InetAddress inetAddress; public MyRMIServerSocketFactory(InetAddress inetAddress) { this.inetAddress = inetAddress; } @Override public ServerSocket createServerSocket(int port) throws IOException { return new ServerSocket(port, 0, inetAddress); } @Override […]

RMI连接被拒绝

我想要获得rmi连接。 我遇到了很多安全问题,但一直无法找到解决这一问题的方法。 我执行我的jar文件: java -Djava.security.policy=java.security.AllPermission -jar “myjarfile” 我用来创建它的代码是: public class server { public static void main(String args[])throws Exception { if (System.getSecurityManager() == null) System.setSecurityManager ( new RMISecurityManager() { public void checkConnect (String host, int port) {} public void checkConnect (String host, int port, Object context) {} }); try { sampleserverimpl server = new sampleserverimpl(); System.out.println(“SERVER […]

安全策略文件和jar

我有RMI应用程序,所以我需要使用策略文件。 我的政策文件很简单(conf.txt): grant { permission java.security.AllPermission; }; 从eclipse运行我的应用程序没有问题。 我已将-Djava.security.policy = conf.txt添加到VM参数中。 我想要做的是建立一个jar文件。 我把它作为来自eclipse的Runnable JAR文件,我在运行它时遇到了一些问题。 我尝试像这样运行它: java -Djava.security.policy=C:\Users\myuser\proj\conf.txt -jar C:\Users\myuser\proj\proj.jar 我得到与没有-Djava.security.policy选项相同的结果。 我的代码: System.setProperty(“java.security.policy”, “./conf.txt”); … if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } 我怎样才能使这个工作? 如果我不必传递-Djava.security.policy就更好了: java -jar myprog.jar

为什么/如何得到错误:NoClassDefFoundError:org / springframework / aop / framework / ProxyFactory

目标:启动一个支持远程访问方法调用的服务器。 在创建所有服务之后,应用程序不会失败。 jar位于target / lib目录中。 父pom具有依赖性: org.springframework spring-aop ${version.spring} 注意:我能够创建一个类型为:org.springframework.aop.framework.ProxyFactory的spring bean 堆栈跟踪: 36438 [main] ERROR org.springframework.web.context.ContextLoader – 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:在类路径资源[application-context-service-web-server.xml]中定义名称为’org.springframework.remoting.rmi.RmiServiceExporter#0’的bean时出错:init的调用方法失败; 嵌套exception是java.lang.NoClassDefFoundError:org / springframework / aop / framework / ProxyFactory 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:264) 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) 在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) 在org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) 在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) 在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) 在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3795) 在org.apache.catalina.core.StandardContext.start(StandardContext.java:4252) 在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) 在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) […]