2012-02-06 7 views
0

Я пытаюсь подкласса 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) 

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

+1

Просьба уточнить, почему вы это делаете. Там может быть более простой способ. – skaffman

ответ

0

Я подклассы весны HttpInvokerServiceExporter разворачивать EJBExceptions в handleRequest().