Adding RosterItem from remote server to roster of client of local server

I want to send add rosteritem from remote server to roster of client of local server. I send this add request by a new IQ command added by me in server. So what code I write to send add rosteritem from another server.

I tried by this

org.xmpp.packet.Roster packet = new org.xmpp.packet.Roster(IQ.Type.set);

packet.setFrom(server.createJID(username, null));

packet.addItem(friendJid,org.xmpp.packet.Roster.Subscription.to);

server.getPacketDeliverer().deliver(packet);

But I am getting following exception when this block of code executed:

2008.06.30 12:00:08 org.jivesoftware.openfire.net.SocketPacketWriteHandler.process(SocketPacketWrite Handler.java:63) Could not deliver packet

<iq type=“set” id=“868-23” from="manjul@192.168.1.4">

<query xmlns=“jabber:iq:roster”>

<item jid="mahesh@192.168.1.7" subscription=“to”/>

</query>

</iq>

org.jivesoftware.openfire.PacketException: Cannot route packet of type IQ or Presence to bare JID:

<iq type=“set” id=“868-23” from="manjul@192.168.1.4">

<query xmlns=“jabber:iq:roster”>

<item jid="mahesh@192.168.1.7" subscription=“to”/>

</query>

</iq>

at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:216)

at org.jivesoftware.openfire.net.SocketPacketWriteHandler.process(SocketPacketWrit eHandler.java:49)

at org.jivesoftware.openfire.spi.PacketDelivererImpl.deliver(PacketDelivererImpl.j ava:48)

at frenzo.messenger.ImportFriendsFromFrenzo.importUserFromFrenzo(ImportFriendsFrom Frenzo.java:68)

at frenzo.messenger.IQImportFriendFromFrenzo.handleIQ(IQImportFriendFromFrenzo.jav a:35)

at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:49)

at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:349)

at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:101)

at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:68)

at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:299)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:86)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:264)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:163)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:133)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:180)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)

at org.jivesoftware.openfire.plugin.RawPrintFilter.messageReceived(RawPrintFilter. java:48)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)

at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 650)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)

at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)

at java.lang.Thread.run(Thread.java:595)

After changing code as:

org.xmpp.packet.Roster packet = new org.xmpp.packet.Roster(IQ.Type.set);

packet.setFrom(server.createJID(username, null));

packet.setTo(friendJid);

packet.addItem(friendJid,org.xmpp.packet.Roster.Subscription.to);

server.getPacketDeliverer().deliver(packet);

Now I am getting following Error in Error.log

2008.07.01 10:03:37 org.jivesoftware.openfire.net.SocketReadingMode.negotiateTLS(SocketReadingMode.j ava:77) Error while negotiating TLS: org.jivesoftware.openfire.net.SocketConnection@1a7aa4 socket: Socket[http://addr=/192.168.1.7,port=55069,localport=5269|http://addr=/192.168.1.7,port =55069,localport=5269] session: org.jivesoftware.openfire.session.LocalIncomingServerSession@13d9c02 status: 1 address: 192.168.1.4/7f7b3e34 id: 7f7b3e34

javax.net.ssl.SSLException: Unsupported record version Unknown-47.115

at com.sun.net.ssl.internal.ssl.EngineInputRecord.bytesInCompletePacket(EngineInpu tRecord.java:97)

at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:748 )

at com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:663)

at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:566)

at org.jivesoftware.openfire.net.TLSStreamHandler.doHandshake(TLSStreamHandler.jav a:212)

at org.jivesoftware.openfire.net.TLSStreamHandler.start(TLSStreamHandler.java:158)

at org.jivesoftware.openfire.net.SocketConnection.startTLS(SocketConnection.java:1 66)

at org.jivesoftware.openfire.net.SocketReadingMode.negotiateTLS(SocketReadingMode. java:74)

at org.jivesoftware.openfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:127)

at org.jivesoftware.openfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 63)

at org.jivesoftware.openfire.net.SocketReader.run(SocketReader.java:120)

at java.lang.Thread.run(Thread.java:595)