Я пытаюсь создать подкласс LocalStatelessSessionProxyFactoryBean
для переопределения метода invoke
.
Есть клиентская сторона, обращающаяся к сервисам через механизм http invoker, и мне нужно развернуть все исключения EJBException, потому что клиентне имеет класса.Я также безуспешно пытался использовать Spring AOP.
У меня есть ограничения на то, что все исключения, возникающие у клиента, являются средами выполнения, и я не могу аннотировать все исключения с помощью @ApplicationException.(если бы эта аннотация была унаследована, это было бы хорошим решением для меня)
Мой весенний конфиг выглядит так:
<bean name="/TestService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter" >
<property name="service" ref="testServiceEJB" />
<property name="serviceInterface" value="package.shared.services.ITestService" />
</bean>
<bean name="testServiceEJB" class="package.framework.server.spring.LocalStatelessSessionProxyFactoryBean" >
<property name="jndiName" value="framework/TestServiceImpl/local"/>
<property name="businessInterface" value="package.shared.services.ITestService"/>
</bean>
Моя проблема в том, что при запуске jboss он говорит мне
[org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/TestService' defined in ServletContext resource [/WEB-INF/service-servlet.xml]:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException:
Service interface [package.framework.shared.services.ITestService] needs to be implemented by service [package.framework.server.spring.LocalStatelessSessionProxyFactoryBean@133c8e5] of class [package.framework.server.spring.LocalStatelessSessionProxyFactoryBean]
У меня нет этой ошибки при использовании тега jee:local-slsb
или объявлении bean-компонента с классом LocalStatelessSessionProxyFactoryBean
.
При отладке проксирование не выполняется там, где это должно происходить,и проверка не проходит:
at org.springframework.remoting.support.RemoteExporter.checkServiceInterface(RemoteExporter.java:136)
at org.springframework.remoting.support.RemoteExporter.getProxyForService(RemoteExporter.java:155)
at org.springframework.remoting.rmi.RemoteInvocationSerializingExporter.prepare(RemoteInvocationSerializingExporter.java:88)
at org.springframework.remoting.rmi.RemoteInvocationSerializingExporter.afterPropertiesSet(RemoteInvocationSerializingExporter.java:81)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
Спасибо за помощь