I my case I created other flow for logging which has VM inbound. Then I called it via Java component. See sample codes below.
public class TestCallVm implements Callable{
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
MuleMessage message = eventContext.getMessage();
String tid = message.getProperty("tid", PropertyScope.SESSION).toString();
MuleClient client = new MuleClient(eventContext.getMuleContext());
Map<String, Object> map = new HashMap<String, Object>();
map.put("tid", message.getProperty("tid", PropertyScope.SESSION).toString());
message.setPayload("Hello");
client.sendNoReceive("vm://vmLogger", "Hello", map);
client.send("vm://vmLogger", "Hello", map);
client.send("vm://vmLogger", message, null);
MuleMessage response = client.send("vm://vmLogger", "Ross", null);
System.out.println("response = ");
return null;
}
}
Hope this will helps :)