Hi Aleksandar, the sample code you provided seems to be a bit redundant. For example you define a TibjmsConnectionFactory and also refrerence one from jndi. You should decide to do one way here either jndi or direct definition.
Here at EnBW we do not use jndi and it works quite well in production. You showed two different ways to configure the endpoint. The first using xml is the old style config. I would not recommend doing it in this way. The second way is the brand new url based config that only works with CXF 2.3.0. Do you use this version? At EnBW we use the JmsConfigFeature. (see http://cxf.apache.org/docs/using-the-jmsconfigfeature.html). This style is available since 2.1.3 and quite well tested. In this case you simply define a jaxws:client or jaxws:endpoint in spring and inject it into your spring beans that need the service. So I suggest you use this style. If there are problems I can surely help if you submit your spring config and the error logs. When communicating with Tibco BW endpoints you will stumble into a problem with correlation ids. (see https://issues.apache.org/jira/browse/CXF-2760). The flag useMessageIDAsCorrealationID can help in this case. Best regards Christian Christian Schneider Informationsverarbeitung Business Solutions Handel und Dispatching Tel : +49-(0)721-63-15482 EnBW Systeme Infrastruktur Support GmbH Sitz der Gesellschaft: Karlsruhe Handelsregister: Amtsgericht Mannheim HRB 108550 Vorsitzender des Aufsichtsrats: Dr. Bernhard Beck Geschäftsführer: Jochen Adenau, Hans-Günther Meier -----Ursprüngliche Nachricht----- Von: Aleksandar Valchev [mailto:[email protected]] Gesendet: Dienstag, 26. Oktober 2010 08:56 An: [email protected] Betreff: Publish endpoint with SOAP over JMS Hi everyone, I'm trying to use SOAP over JMS with TIBCO EMS server. My cxf.xml configuration file contains: <jms:destination name="{http://avalchev.com/Portfolio/}PortfolioPortImpl.jms-destination"> <jms:sessionPool lowWaterMark="10" highWaterMark="5000"/> <jms:address destinationStyle="queue" jndiConnectionFactoryName="QueueConnectionFactory" jndiDestinationName="test.q" connectionUserName="admin" connectionPassword=""> <jms:JMSNamingProperty name="java.naming.factory.initial" value="com.tibco.tibjms.naming.TibjmsInitialContextFactory"/> <jms:JMSNamingProperty name="java.naming.provider.url" value="tibjmsnaming://localhost:7222"/> </jms:address> <jms:jmsConfig-ref>jmsConf2</jms:jmsConfig-ref> </jms:destination> <bean id="jmsConf2" class="org.apache.cxf.transport.jms.JMSConfiguration" p:connectionFactory-ref="jmsConnectionFactory" p:timeToLive="500" p:sessionTransacted="false" p:targetDestination="test.q" p:pubSubDomain="false" p:usingEndpointInfo="false" p:receiveTimeout="1500" p:concurrentConsumers="3" p:maxConcurrentConsumers="5" p:maxSuspendedContinuations="2" p:acceptMessagesWhileStopping="true" /> <bean id="jmsConnectionFactory" class="com.tibco.tibjms.TibjmsQueueConnectionFactory" p:serverUrl="tcp://localhost:7222" /> For publishing endpoint I'm using the following code: String JMS_ENDPOINT_URI = "jms:queue:test.cxf.jmstransport.queue?timeToLive=1000" + "&jndiConnectionFactoryName=QueueConnectionFactory" + "&jndiInitialContextFactory" + "=com.tibco.tibjms.naming.TibjmsInitialContextFactory" + "&jndiURL=tibjmsnaming://apstib001-dev:7222"; Object implementor = new PortfolioPortImpl(); JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean(); svrFactory.setServiceClass(PortfolioPort.class); svrFactory.setTransportId(JMSSpecConstants.SOAP_JMS_SPECIFICATION_TRANSPORTID); svrFactory.setAddress(JMS_ENDPOINT_URI); svrFactory.setServiceBean(implementor); svrFactory.create(); I want to use CXF in production, so is JaxWsServerFactoryBean ready for production. I'm not going to use application server like JBoss. Is there any other more "production ready" code for publishing JMS endpoint? This message is strictly confidential as between the sender and the intended recipient. If you are not the intended recipient of the message, please notify the sender immediately and delete this e-mail from your system. It is not possible to guarantee the integrity of e-mails sent through the Internet. It is therefore not recommended to include unencrypted confidential data, such as personal details, in e-mails. The content of the message does not bind Lombard International Assurance S.A. ("Lombard") in any way and any information in this e-mail on the services offered by Lombard is intended to provide general guidance only. Nothing in this e-mail is intended as an offer or solicitation for the purchase or sale of any life assurance, pension or other financial product. Neither is the information intended to constitute any form of legal, fiscal or investment advice and it should therefore be used only in conjunction with appropriate professional advice obtained from a suitably qualified professional source.
