Issue 1:
Zhou Wu opened SPR-6164 and commented

Suppose we have the controller request mapping as the following

@RequestMapping(value = "/my/{vari}", method = RequestMethod.GET)

@ResponseBody

public String getVari(@PathVariable String vari) {

System.out.println("vari=" + vari);

return vari;

}

If a request such as "http://localhost/myapp/my/abc.mycontroller.com" is submitted, the actually value of 'vari' obtained by Spring API only returns 'abc.mycontroller'.

Further investigation turns out the issue is at line 564 in https://src.springframework.org/svn/spring-framework/tags/spring-framework-3.0.0.RC1/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java. The pattern generated by the line results in "{vari}.". With the 'pathMatcher' (the matcher used at line 565) object created by AntPathStringMatcher("{vari}.", "abc.mycontroller.com", map), the value of 'vari' will be 'abc.mycontroller' in the 'map' variable after executing line 566.

Affects: 3.0 M4, 3.0 RC1

Attachments:

MyController.java (950 bytes)

Issue Links:

#10899 RESTful URLs with path variables containing dots are incorrectly mapped ("is duplicated by")

#14660 Spring eats @PathVariable part after last dot ("is duplicated by")

#19242 @PathVariable will cut off the last point ("is duplicated by")

#12288 Allow valid file extension paths for content negotiation to be specified

#10208 ReSTful URLs with content type extension do not work properly

Referenced from: commits 8292491, e24e768

2 votes, 11 watchers

Issue 2:
Deepak Kalra opened SPR-590 and commented

Hi

I am working on integration of EJB CMT with Spring Framework.

Case 1. Client is direct calling spring managed pojo with PROPAGATION_REQUIRED.

Case 2. Client is calling Remote Bean method demarcated as RequiresNew.Inside the method a spring managed pojo is called with PROPAGATION_REQUIRED.

I am getting the error in Case 2 as Its not able to find JTA UserTransaction

Case 1

I am able to run the case 1 without any error and data is getting inserted As its getting the JTA UserTransaction

///////////////////////////////////////////////////////

INFO: Creating shared instance of singleton bean 'platformTransactionManager'

Dec 29, 2004 7:21:18 AM org.springframework.transaction.jta.JtaTransactionManager lookupUserTransaction

INFO: Using JTA UserTransaction [com.ibm.ws.Transaction.JTA.UserTransactionImpl@2e5e28db] from JNDI location [jta/usertransaction]

///////////////////////////////////////////////////////

Pls see EventTestClient for the same.

Case 2

I am getting the error. Pls see EJBSpringClient

for the same. Somehow Its not able to find JTA UserTransaction but

in case 1 Its able to find. Only difference is client is calling the EJB where as in case 1 does not

-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-

Error creating bean with name 'platformTransactionManager' defined in class path resource [com/atomic/springjndi/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [jta/usertransaction]; nested exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.

-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-

This is my applicationContext.xml file

-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="myTestDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/atomicDB</value>
</property>
</bean>

<bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="myTestDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.OracleDialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/atomic/springjndi/Event.hbm.xml</value>
</list>
</property>
</bean>

<bean id="myEventDAO" class="com.atomic.springjndi.EventDAOImpl">
<property name="sessionFactory">
<ref bean="mySessionFactory" />
</property>
</bean>

<bean id="myEventServiceTarget" class="com.atomic.springjndi.EventServiceImpl">
<property name="eventDao">
<ref bean="myEventDAO" />
</property>
</bean>

<!-- TransactionManager-->

<bean id="myTransactionManager" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean" />

<bean id="platformTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<ref local="myTransactionManager" />
</property>
<property name="userTransactionName">
<value>jta/usertransaction</value>
</property>
</bean>
<!-- TransactionManager-->

<!-- ProxyFactoryBean-->
<bean id="myEventService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="platformTransactionManager" />
</property>
<property name="target">
<ref bean="myEventServiceTarget" />
</property>
<property name="transactionAttributes">
<props>
<prop key="checkAllEvents*">PROPAGATION_SUPPORTS</prop>
<prop key="insertEvents*">PROPAGATION_SUPPORTS</prop>
</props>
</property>
</bean>
<!-- ProxyFactoryBean-->

</beans>

-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-

Complete Error for Case 2

//////////////////////////////////////////////////////////////////

InitialContext javax.naming.InitialContext@4ee0ec52

EJBSpringTransactionHome IOR:0000000000000043524d493a636f6d2e61746f6d69632e656a62737072696e672e454a42537072696e675472616e73616374696f6e486f6d653a303030303030303030303030303030300000000000010000000000000130000102000000000a6c6f63616c686f73740010c8000000a64a4d4249000000124773e3aa37643062633737336533616166633334000000240000008249454a5002008e629f84077365727665723103454a4200000068acac0002000100290000005f5f686f6d654f66486f6d6573235f5f686f6d654f66486f6d6573235f5f686f6d654f66486f6d65730870726f6a656374454a42537072696e6723656a624d6f64756c652e6a617223454a42537072696e675472616e73616374696f6e0000000000070000000100000014000000000501000100000000000101000000000049424d0a00000008000000011420000100000026000000020002000049424d040000000500050101020000000000001f0000000400000003000000200000000400000001000000250000000400000003

EJBSpringTransaction 1 IOR:000000000000003f524d493a636f6d2e61746f6d69632e656a62737072696e672e454a42537072696e675472616e73616374696f6e3a303030303030303030303030303030300000000000010000000000000104000102000000000a6c6f63616c686f73740010c80000007c4a4d4249000000124773e3aa37643062633737336533616166633334000000240000005849454a500200eb53a395077365727665723103454a420000003eacac00020001013300000070726f6a656374454a42537072696e6723656a624d6f64756c652e6a617223454a42537072696e675472616e73616374696f6e000000070000000100000014000000000501000100000000000101000000000049424d0a00000008000000011420000100000026000000020002000049424d040000000500050101020000000000001f0000000400000003000000200000000400000001000000250000000400000003

EJBSpringTransaction RemoteException java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:

java.rmi.RemoteException:

Trace from server: 1198777258 at host localhost >>

java.rmi.RemoteException: ; nested exception is:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformTransactionManager' defined in class path resource [com/atomic/springjndi/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [jta/usertransaction]; nested exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.

at com.ibm.ejs.container.RemoteExceptionMappingStrategy.setUncheckedException(RemoteExceptionMappingStrategy.java:196)

at com.ibm.ejs.container.EJSDeployedSupport.setUncheckedException(EJSDeployedSupport.java:296)

at com.atomic.ejbspring.EJSRemoteStatelessEJBSpringTransaction_f9c64424.springServiceLayer(EJSRemoteStatelessEJBSpringTransaction_f9c64424.java:41)

at com.atomic.ejbspring._EJSRemoteStatelessEJBSpringTransaction_f9c64424_Tie.springServiceLayer(_EJSRemoteStatelessEJBSpringTransaction_f9c64424_Tie.java:154)

at com.atomic.ejbspring._EJSRemoteStatelessEJBSpringTransaction_f9c64424_Tie._invoke(_EJSRemoteStatelessEJBSpringTransaction_f9c64424_Tie.java:98)

at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:608)

at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:461)

at com.ibm.rmi.iiop.ORB.process(ORB.java:432)

at com.ibm.CORBA.iiop.ORB.process(ORB.java:1728)

at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2227)

at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:65)

at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)

at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:912)

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformTransactionManager' defined in class path resource [com/atomic/springjndi/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [jta/usertransaction]; nested exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:318)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:236)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:159)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:261)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:317)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:80)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)

at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)

at com.atomic.ejbspring.EJBSpringTransactionBean.springServiceLayer(EJBSpringTransactionBean.java:53)

at com.atomic.ejbspring.EJSRemoteStatelessEJBSpringTransaction_f9c64424.springServiceLayer(EJSRemoteStatelessEJBSpringTransaction_f9c64424.java:35)

... 10 more

Caused by: org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [jta/usertransaction]; nested exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.

at org.springframework.transaction.jta.JtaTransactionManager.lookupUserTransaction(JtaTransactionManager.java:359)

at org.springframework.transaction.jta.JtaTransactionManager.afterPropertiesSet(JtaTransactionManager.java:312)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1037)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:305)

... 20 more

Caused by: com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. [Root exception is javax.naming.ConfigurationException]

at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:931)

at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookup(Helpers.java:680)

at com.ibm.ws.naming.jndicos.CNContextImpl.processResolveResults(CNContextImpl.java:1712)

at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1567)

at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1480)

at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1187)

at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1067)

at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:144)

at javax.naming.InitialContext.lookup(InitialContext.java:361)

at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:123)

at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:85)

at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:121)

at org.springframework.transaction.jta.JtaTransactionManager.lookupUserTransaction(JtaTransactionManager.java:347)

... 23 more

<< END server: 1198777258 at host localhost

; nested exception is:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformTransactionManager' defined in class path resource [com/atomic/springjndi/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [jta/usertransaction]; nested exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.

//////////////////////////////////////////////////////////////////

Pls help me in this regard

Kind Regards

Deepak

Affects: 1.1.3

Attachments:

EJBSpringClient.java (2.47 kB)

EventTestClient.java (2.18 kB)

Issue Links:

#5314 EJB initiating the Tansaction CMT ("is duplicated by")