Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JMS with Sun application server


Автор: KasDmi 8.4.2009, 17:12
Добрый день!
Пишу клиента, который по JMS отправляет сообщения бину на Sun app server. Никак не могу понять как клиент коннектится к серверу, сервер находится на другой машине в локальной сети.
Код
InitialContext ctx = new InitialContext(properties);
Queue queue = (Queue) ctx.lookup("jms/MyQueue");
QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("jms/MyQueueConnectionFactory");

Что же включает в себя properties для sun app server?

Автор: MisterCleric 8.4.2009, 17:54
надо ковырять. вот откуда надо отталкиватся
Код

#jboss
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
app.server.host=[host.name or IP] for example localhost 
app.server.port=[JNDI port default 1099]

#websphere
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
app.server.host=iiop://[host.name or IP]
app.server.port=[JNDI port default 2809]


а элементы проперти для InitialContext такие:
Код

 <prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
  <prop key="java.naming.provider.url">${app.server.host}:${app.server.port}</prop>


Добавлено через 2 минуты и 22 секунды
ну вроде вот:
Код

Properties env = new Properties();

env.put("java.naming.factory.initial","com.sun.jndi.cosnaming.CNCtxFactory");

env.put("java.naming.provider.url", "iiop://" + host +":"+port);

Context initial = new InitialContext(env);
Object objref = initial.lookup([your JNDI name]);



Добавлено через 6 минут и 22 секунды
to moderators:
Ребята, может стоит добавить к подсветке кода еще и такой тип как properties ? Есть у нас в java такие удобные файлики... Спасибо за внимание

Автор: KasDmi 9.4.2009, 10:02
MisterCleric, cпасибо за ответ!
Попробовал сделать, как ты написал в последнем фрагменте кода, выскакивает такой эксепшн:
Код

09.04.2009 10:48:48 com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase readGIOPHeader
WARNING: "IOP00710220: (INTERNAL) Error in GIOP magic"
org.omg.CORBA.INTERNAL:   vmcid: SUN  minor code: 220 completed: Maybe
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.giopMagicError(ORBUtilSystemException.java:4095)
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.giopMagicError(ORBUtilSystemException.java:4109)
    at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.readGIOPHeader(MessageBase.java:156)
    at com.sun.corba.se.impl.transport.CorbaContactInfoBase.createMessageMediator(CorbaContactInfoBase.java:150)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.readBits(SocketOrChannelConnectionImpl.java:314)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.handleEvent(SocketOrChannelConnectionImpl.java:1098)
    at com.sun.corba.se.impl.transport.SelectorImpl.run(SelectorImpl.java:282)
javax.naming.CommunicationException: Cannot connect to ORB [Root exception is org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe]
    at com.sun.jndi.cosnaming.CNCtx.setOrbAndRootContext(CNCtx.java:362)
    at com.sun.jndi.cosnaming.CNCtx.initUsingIiopUrl(CNCtx.java:289)
    at com.sun.jndi.cosnaming.CNCtx.initUsingUrl(CNCtx.java:245)
    at com.sun.jndi.cosnaming.CNCtx.initOrbAndRootContext(CNCtx.java:209)
    at com.sun.jndi.cosnaming.CNCtx.<init>(CNCtx.java:69)
    at com.sun.jndi.cosnaming.CNCtxFactory.getInitialContext(CNCtxFactory.java:32)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.InitialContext.<init>(InitialContext.java:197)
    at ru.tower.portalsearch.ejb.SimpleSender.main(SimpleSender.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectionAbort(ORBUtilSystemException.java:2372)
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectionAbort(ORBUtilSystemException.java:2390)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.readBits(SocketOrChannelConnectionImpl.java:354)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.handleEvent(SocketOrChannelConnectionImpl.java:1098)
    at com.sun.corba.se.impl.transport.SelectorImpl.run(SelectorImpl.java:282)
Caused by: org.omg.CORBA.INTERNAL:   vmcid: SUN  minor code: 220 completed: Maybe
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.giopMagicError(ORBUtilSystemException.java:4095)
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.giopMagicError(ORBUtilSystemException.java:4109)
    at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.readGIOPHeader(MessageBase.java:156)
    at com.sun.corba.se.impl.transport.CorbaContactInfoBase.createMessageMediator(CorbaContactInfoBase.java:150)
    at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.readBits(SocketOrChannelConnectionImpl.java:314)
    ... 2 more

На Sun.com нашёл "Sun Java System Message Queue 3.7 UR1 Developer's Guide", там пишут, что надо делать так:
Код
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:///C:/imq_admin_objects");

Не могу разобраться, что это за файл...

Автор: MisterCleric 9.4.2009, 10:22
А там же и написено:
Цитата

You need to create the directory represented by c:/imq_admin_objects before referencing it in your code. (that is, c:/imq_admin_objects must be an existing directory). 


Добавлено через 4 минуты и 56 секунд
В другом месте написано такое:
Цитата

Please have a look at http://docs.sun.com/source/817-3727/adminobj.html
to get more understanding on managing administerd objects.


Ты уж извени: я не селен в  Sun application server. Не приходилось с ним работать.
То что там пишут, выходит за рамки моих возможностей - надо детальней сидеть и ковырять что да как.

Автор: KasDmi 9.4.2009, 17:04
Ееее! Добил я этого клиента! smile 
Всё оказалось не очень-то и сложно, делал по примеру SJSAS 9.1 Administration Guide. smile 
Код
ConnectionFactory factory = new ConnectionFactory();
factory.setProperty(ConnectionConfiguration.imqAddressList, "10.0.0.40:7676");
QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(queue_name);

Спасибо за помощь! smile 

Автор: MisterCleric 9.4.2009, 17:11
Отлично! Закрывай тему!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)