Я пытаюсь подкласса LocalStatelessSessionProxyFactoryBean
, чтобы переопределить метод invoke
.Java EE Subclassing LocalStatelessSessionProxyFactoryBean
Существует клиентская сторона, получающая доступ к службам через механизм http invoker, и мне нужно развернуть все EJBExceptions, потому что у клиента нет класса. Я тоже безуспешно пытался с весенним АОП.
У меня есть ограничения, что все исключения, поднятые клиентом, являются временем выполнения, и я не могу аннотировать все исключения с помощью @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 [packag[email protected]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)
Спасибо за помощь
Просьба уточнить, почему вы это делаете. Там может быть более простой способ. – skaffman