[mule-user] Using RMI Connector with Mule

7 views
Skip to first unread message

sateesh

unread,
Apr 16, 2007, 4:14:49 PM4/16/07
to us...@mule.codehaus.org

Hi All,

I am trying to use Mule to connect to a RMI Service ( This Service is
exposed as an RMI Service Using Spring) and i am getting the following
Exception..

[code]
log4j:WARN Please initialize the log4j system properly.
org.mule.umo.provider.DispatchException: Failed to route event via endpoint:
MuleEndpoint{connector=org.mule.providers.rmi.RmiConnector@47a0d4,
endpointUri=rmi://locahhost:1099/LuceneSearchConnector?method=query,
transformer=null, name='endpoint.rmi.locahhost.1099', type='sender',
properties={method=query}, transactionConfig=Transaction{factory=null,
action=NONE, timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=false, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=null,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of type:
com.lmco.dpa.services.search.framework.SearchXmlData
at
org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:261)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:328)
at org.mule.extras.client.MuleClient.send(MuleClient.java:738)
at org.mule.extras.client.MuleClient.send(MuleClient.java:715)
at org.mule.extras.client.MuleClient.send(MuleClient.java:668)
at
com.lmco.dpa.services.search.framework.Aggregator.sendViaMuleClient(Aggregator.java:248)
at
com.lmco.dpa.services.search.framework.Aggregator$SearchThread.run(Aggregator.java:293)
Caused by: org.mule.providers.FatalConnectException: ReconnectStrategy
"org.mule.providers.SingleAttemptConnectionStrategy" failed to reconnect
receiver on endpoint "org.mule.providers.rmi.RmiMessageDispatcher@bf053f"
at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:33)
at
org.mule.providers.AbstractConnectionStrategy.connect(AbstractConnectionStrategy.java:86)
at
org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:231)
... 6 more
Caused by: org.mule.providers.FatalConnectException: ReconnectStrategy
"org.mule.providers.SingleAttemptConnectionStrategy" failed to reconnect
receiver on endpoint "org.mule.providers.rmi.RmiMessageDispatcher@bf053f"
at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:33)
at
org.mule.providers.AbstractConnectionStrategy.connect(AbstractConnectionStrategy.java:86)
at
org.mule.providers.AbstractMessageDispatcher.connect(AbstractMessageDispatcher.java:478)
at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:29)
... 8 more
Caused by: org.mule.providers.ConnectException: Initialisation Failure: Need
to specify class name in environment or system property, or as an applet
parameter, or in an application resource file: java.naming.factory.initial
at
org.mule.providers.AbstractMessageDispatcher.connect(AbstractMessageDispatcher.java:499)
at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:29)
... 11 more
Caused by: javax.naming.NoInitialContextException: Need to specify class
name in environment or system property, or as an applet parameter, or in an
application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at
javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.mule.providers.rmi.RmiConnector.getRemoteRef(RmiConnector.java:309)
at
org.mule.providers.rmi.RmiConnector.getRemoteObject(RmiConnector.java:315)
at
org.mule.providers.rmi.RmiMessageDispatcher.doConnect(RmiMessageDispatcher.java:61)
at
org.mule.providers.AbstractMessageDispatcher.connect(AbstractMessageDispatcher.java:485)
... 12 more
[/code]

And my mule config file is listed below:

[code]
<bean id="muleManager"
class="org.mule.extras.spring.config.AutowireUMOManagerFactoryBean"/>

<bean id="muleEnvironmentProperties" class="java.util.HashMap">
<constructor-arg index="0" type="java.util.Map">
<map>
<entry key="serverUrl" value="tcp://localhost:50000"/>
</map>
</constructor-arg>

</bean>

<bean id="muleConfig" class="org.mule.config.MuleConfiguration"
depends-on="muleManager">
<property name="serverUrl" value="tcp://localhost:50000"/>
</bean>
<bean id="muleConfigReader"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="mule_manager.properties"/>
</bean>

<bean id="muleNameProcessor"
class="org.mule.extras.spring.config.MuleObjectNameProcessor"/>

<bean id="muleClient" class="org.mule.extras.client.MuleClient"/>

<!-- Mule endpoint for test -->

<bean id="rmiConnector" class="org.mule.providers.rmi.RmiConnector">
<!--<property
name="messageDelayTime"><value>1000</value></property>-->
<property name="securityPolicy"
value="/home/myapp/src/main/resources/security.policy"/>

</bean>

<bean id="rmiOutboundEndpoint" scope="prototype"
class="org.mule.impl.endpoint.MuleEndpoint">
<property name="connector"><ref local="rmiConnector"/></property>
<property name="endpointURI">
<bean class="org.mule.impl.endpoint.MuleEndpointURI">
<constructor-arg index="0">

<value>rmi://locahhost:1099/LuceneSearchConnector</value>
</constructor-arg>
</bean>
</property>
<property name="type"><value>sender</value></property>
</bean>
[/code]

Thanks
Sateesh
--
View this message in context: http://www.nabble.com/Using-RMI-Connector-with-Mule-tf3586977.html#a10023863
Sent from the Mule - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Andrew Perepelytsya

unread,
Apr 16, 2007, 4:25:53 PM4/16/07
to us...@mule.codehaus.org
http://mule.mulesource.org/display/MULE/Managing+RMI+Objects

You also have an error in the rmi url: locaHhost

Andrew


sateesh

unread,
Apr 17, 2007, 11:08:41 AM4/17/07
to us...@mule.codehaus.org

Hi Andy,

Thanks for your response..Yes i was stupid enough to miss that typo..

I modified my mule-spring config file and still getting the folleoewing
Exception:


[code]

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service">
<ref bean="searchFederator" />
</property>
<property name="serviceName">
<value>SearchFederator</value>
</property>
<property name="serviceInterface">
<value>com.lmco.dpa.services.search.framework.Federator</value>
</property>
</bean>
-->



<bean id="muleManager"
class="org.mule.extras.spring.config.AutowireUMOManagerFactoryBean"/>

<bean id="muleEnvironmentProperties" class="java.util.HashMap">
<constructor-arg index="0" type="java.util.Map">
<map>
<entry key="serverUrl" value="tcp://localhost:50000"/>
</map>
</constructor-arg>

</bean>

<bean id="muleConfig" class="org.mule.config.MuleConfiguration"
depends-on="muleManager">
<property name="serverUrl" value="tcp://localhost:50000"/>
</bean>
<bean id="muleConfigReader"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="mule_manager.properties"/>
</bean>

<bean id="muleNameProcessor"
class="org.mule.extras.spring.config.MuleObjectNameProcessor"/>

<bean id="muleClient" class="org.mule.extras.client.MuleClient"/>

<bean id="rmiConnector" class="org.mule.providers.rmi.RmiConnector">
<!--<property
name="messageDelayTime"><value>1000</value></property>-->
<property name="securityPolicy"

value="/home/SearchFramework/src/main/resources/security.policy"/>

</bean>

<bean id="rmiContext" class="org.mule.impl.container.RmiContainerContext">
<property name="environment">
<map>
<entry key="java.naming.factory.initial">
<value>org.jnp.interfaces.NamingContextFactory</value>
</entry>
<entry key="java.naming.provider.url">
<value>jnp://localhost</value>
</entry>
<entry key="java.naming.factory.url.pkgs">
<value>org.jboss.naming:org.jnp.interfaces</value>
</entry>
</map>
</property>
<property name="securityPolicy"
value="/home/dpa/mordoa/projects/eclipse/SearchFramework-Workspace/MyEclipseWorkspace/SearchFramework/src/main/resources/security.policy"/>
<property name="securityManager"
value="java.rmi.RMISecurityManager"/>


</bean>

<bean id="rmiOutboundEndpoint" scope="prototype"
class="org.mule.impl.endpoint.MuleEndpoint">
<property name="connector"><ref local="rmiConnector"/></property>
<property name="endpointURI">
<bean class="org.mule.impl.endpoint.MuleEndpointURI">
<constructor-arg index="0">

<value>rmi://localhost:1099/LuceneSearchConnector</value>


</constructor-arg>
</bean>
</property>
<property name="type"><value>sender</value></property>

<property name="properties">
<map>
<entry key="methodArgumentTypes">
<list>
<value>java.lang.String</value>
</list>
</entry>
</map>
</property>


</bean>

[/code]


And the Excep i am getting is:

[code]


org.mule.umo.provider.DispatchException: Failed to route event via
endpoint:

MuleEndpoint{connector=org.mule.providers.rmi.RmiConnector@15ed659,
endpointUri=rmi://localhost:1099/LuceneSearchConnector?method=query,
transformer=null, name='endpoint.rmi.localhost.1099', type='sender',


properties={method=query}, transactionConfig=Transaction{factory=null,
action=NONE, timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=false, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=null,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of type:

java.lang.String
searchThread.getResult() = null


at
org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:261)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:328)
at org.mule.extras.client.MuleClient.send(MuleClient.java:738)

at org.mule.extras.client.MuleClient.send(MuleClient.java:684)
at
com.lmco.dpa.services.search.framework.Aggregator.sendViaMuleClient(Aggregator.java:250)
at
com.lmco.dpa.services.search.framework.Aggregator$SearchThread.run(Aggregator.java:295)


Caused by: org.mule.providers.FatalConnectException: ReconnectStrategy
"org.mule.providers.SingleAttemptConnectionStrategy" failed to reconnect

receiver on endpoint "org.mule.providers.rmi.RmiMessageDispatcher@988707"


at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:33)
at
org.mule.providers.AbstractConnectionStrategy.connect(AbstractConnectionStrategy.java:86)
at
org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:231)

... 5 more


Caused by: org.mule.providers.FatalConnectException: ReconnectStrategy
"org.mule.providers.SingleAttemptConnectionStrategy" failed to reconnect

receiver on endpoint "org.mule.providers.rmi.RmiMessageDispatcher@988707"


at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:33)
at
org.mule.providers.AbstractConnectionStrategy.connect(AbstractConnectionStrategy.java:86)
at
org.mule.providers.AbstractMessageDispatcher.connect(AbstractMessageDispatcher.java:478)
at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:29)

... 7 more


Caused by: org.mule.providers.ConnectException: Initialisation Failure: Need
to specify class name in environment or system property, or as an applet
parameter, or in an application resource file: java.naming.factory.initial
at
org.mule.providers.AbstractMessageDispatcher.connect(AbstractMessageDispatcher.java:499)
at
org.mule.providers.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:29)

... 10 more


Caused by: javax.naming.NoInitialContextException: Need to specify class
name in environment or system property, or as an applet parameter, or in an
application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at
javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.mule.providers.rmi.RmiConnector.getRemoteRef(RmiConnector.java:309)
at
org.mule.providers.rmi.RmiConnector.getRemoteObject(RmiConnector.java:315)
at
org.mule.providers.rmi.RmiMessageDispatcher.doConnect(RmiMessageDispatcher.java:61)
at
org.mule.providers.AbstractMessageDispatcher.connect(AbstractMessageDispatcher.java:485)

[/code]

Thanks
Sateesh
--
View this message in context: http://www.nabble.com/Using-RMI-Connector-with-Mule-tf3586977.html#a10036496

sateesh

unread,
Apr 23, 2007, 8:46:32 AM4/23/07
to us...@mule.codehaus.org

Hi,

I am trying a Simple Example to use RMI Transport with Mule and here i am
psoting the code as well as the exception i am getting..I couldn't find much
in the Documentation. In one of the earlier posts some one suggested to use
Agents which i am in the process of exploring ..

The Exception i am getting is:

[CODE]
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'muleManager' defined in class path resource
[mule/tests/mule-config.xml]: Initialization of bean failed; nested
exception is org.springframework.beans.factory.BeanInitializationException:
Failed to wire MuleManager together: access denied (java.io.FilePermission
/dpa/maven-repository/org/mule/mule-core/1.3.3/mule-core-1.3.3.jar read);
nested exception is java.security.AccessControlException: access denied
(java.io.FilePermission
/dpa/maven-repository/org/mule/mule-core/1.3.3/mule-core-1.3.3.jar read)
Caused by: org.springframework.beans.factory.BeanInitializationException:
Failed to wire MuleManager together: access denied (java.io.FilePermission
/dpa/maven-repository/org/mule/mule-core/1.3.3/mule-core-1.3.3.jar read);
nested exception is java.security.AccessControlException: access denied
(java.io.FilePermission
/dpa/maven-repository/org/mule/mule-core/1.3.3/mule-core-1.3.3.jar read)
Caused by: java.security.AccessControlException: access denied
(java.io.FilePermission
/dpa/maven-repository/org/mule/mule-core/1.3.3/mule-core-1.3.3.jar read)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
at
java.security.AccessController.checkPermission(AccessController.java:427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
at java.util.zip.ZipFile.<init>(ZipFile.java:198)
at java.util.jar.JarFile.<init>(JarFile.java:132)
at java.util.jar.JarFile.<init>(JarFile.java:70)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:56)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:41)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:53)
at
sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:102)
at
sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:124)
at java.net.URL.openStream(URL.java:1007)
at org.mule.util.IOUtils.getResourceAsStream(IOUtils.java:111)
at org.mule.util.SpiUtils.findServiceDescriptor(SpiUtils.java:160)
at org.mule.impl.model.ModelFactory.createModel(ModelFactory.java:35)
at
org.mule.extras.spring.config.AutowireUMOManagerFactoryBean.createModel(AutowireUMOManagerFactoryBean.java:199)
at
org.mule.extras.spring.config.AutowireUMOManagerFactoryBean.setApplicationContext(AutowireUMOManagerFactoryBean.java:168)
at
org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:86)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:302)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1081)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:270)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
at mule.tests.MyMuleRMITest.testRMI(MyMuleRMITest.java:23)
at mule.tests.MyMuleRMITest.main(MyMuleRMITest.java:16)

[/CODE}

And listed below are my Client Side/ Server Side and corrsponding Config
Files

I have a Simple Account Service which is exposed as an RMI Service using
Mule..

config file:

[CODE]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

<bean id="accountService" class="spring.rmi.test.AccountServiceImpl">
</bean>

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="AccountService" />
<property name="service" ref="accountService" />
<property name="serviceInterface"
value="spring.rmi.test.AccountService" />
<property name="registryPort" value="1199" />
</bean>
</beans>
[/CODE]

Now the Calling Client uses Mule to connect to this RMI Enabled Service..

config file:
[CODE]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="muleManager"
class="org.mule.extras.spring.config.AutowireUMOManagerFactoryBean" />

<bean id="muleNameProcessor"
class="org.mule.extras.spring.config.MuleObjectNameProcessor" />

<bean id="muleConfig" class="org.mule.config.MuleConfiguration"
depends-on="muleManager">
<property name="serverUrl" value="tcp://localhost:50000" />
</bean>

<!--

<bean id="muleConfigReader"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="mule_manager.properties" />
</bean>

-->


<bean id="rmiConnector"
class="org.mule.providers.rmi.RmiConnector">

<property name="securityPolicy" value="/dpa/security.policy"/>
</bean>

<bean id="rmiContext"
class="org.mule.impl.container.RmiContainerContext">

<property name="environment">
<map>

<!--
<entry key="java.naming.factory.initial">
<value>
org.mule.impl.jndi.MuleInitialContextFactory
</value>
</entry>
-->
<entry key="java.naming.provider.url">
<value>jnp://localhost:1199</value>
</entry>
</map>
</property>
<property name="securityPolicy" value="/dpa/security.policy" />


<property name="securityManager"
value="java.rmi.RMISecurityManager" />
</bean>

<bean id="rmiOutboundEndpointForCatalog" scope="prototype"
class="org.mule.impl.endpoint.MuleEndpoint">
<property name="connector" ref="rmiConnector" />


<property name="endpointURI">
<bean class="org.mule.impl.endpoint.MuleEndpointURI">
<constructor-arg index="0">
<value>

rmi://locahhost:1199/CatalogService?method=processSample


</value>
</constructor-arg>
</bean>
</property>
<property name="type">
<value>sender</value>
</property>

</bean>

<bean id="muleClient" class="org.mule.extras.client.MuleClient"

scope="prototype" />

</beans>
[/CODE]

Unit Test Class Code

[CODE]

public class MyMuleRMITest {

/**
* @param args
*/
public static void main(String[] args) {

MyMuleRMITest test = new MyMuleRMITest();
test.testRMI();


}

public void testRMI(){
try{
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("classpath:/mule/tests/mule-config.xml");
MuleClient muleClient =
(MuleClient)applicationContext.getBean("muleClient");
UMOMessage msg
=muleClient.send("rmi://localhost:1199/AccountService?method=getAccounts",
"test",null);
Object payload =msg.getPayload();
System.out.println("Returned Payload="+payload);
}
catch (Exception e) {
e.printStackTrace();
}
}

}

[/CODE]

And finally this is my security.policy file..

[CODE]

grant {
permission java.security.AllPermission;
};

[/CODE]

Thanks
Sateesh
--
View this message in context: http://www.nabble.com/Using-RMI-Connector-with-Mule-tf3586977.html#a10139313

Reply all
Reply to author
Forward
0 new messages