[prev in list] [next in list] [prev in thread] [next in thread]
List: sandesha-dev
Subject: [jira] Commented: (AXIS2-4662) Improve Spring Integration for Axis2
From: "Stephan van Hugten (JIRA)" <jira () apache ! org>
Date: 2010-03-30 13:00:27
Message-ID: 1787042685.577941269954027841.JavaMail.jira () brutus ! apache ! org
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/AXIS2-4662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12851383#action_12851383 \
]
Stephan van Hugten commented on AXIS2-4662:
-------------------------------------------
After some tinkering I have come up with this:
ApplicationContext.xml:
<context:component-scan base-package="com.example">
<context:include-filter type="annotation" expression="javax.jws.WebService"/>
</context:component-scan>
<bean class="com.example.poc.beanprocessor.WebServiceAnnotationBeanPostProcessor" \
/>
BeanPostProcessor:
public class WebServiceAnnotationBeanPostProcessor extends \
CommonAnnotationBeanPostProcessor implements ApplicationContextAware {
/**
*
*/
private static final long serialVersionUID = -4394340453143619407L;
private AxisServer axisServer;
private ApplicationContext applicationContext;
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws \
BeansException { if (bean.getClass().isAnnotationPresent(WebService.class)) {
if (axisServer == null) {
Map beans = applicationContext.getBeansOfType(AxisServer.class);
if (beans.isEmpty()) {
throw new NoSuchBeanDefinitionException("No Axis2 engine configured in the \
Spring context!"); } else {
// TODO Can there be more than 1?
axisServer = (AxisServer) beans.values().iterator().next();
}
}
try {
//FIXME: Use annotation configured servicename
axisServer.deployService(bean);
} catch (AxisFault e) {
throw new BeanCreationException(e.getMessage(), e);
}
}
return bean;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws \
BeansException { this.applicationContext = applicationContext;
}
}
> Improve Spring Integration for Axis2
> ------------------------------------
>
> Key: AXIS2-4662
> URL: https://issues.apache.org/jira/browse/AXIS2-4662
> Project: Axis2
> Issue Type: Improvement
> Components: kernel
> Affects Versions: 1.5.1
> Reporter: Stephan van Hugten
> Attachments: POC_Axis2.zip
>
>
> I wanted to create an application that has tight integration between Axis2 \
> webservices and Spring. There is already a solution presented at the Axis2 website, \
> http://ws.apache.org/axis2/1_5_1/spring.html, but I found that solution very \
> cumbersome in my opinion and doesn't support the JSR 181 annotations. With my \
> proposed approach it is possible to fully integrate the Axis2 run-time with a \
> spring container, whether it is stand-alone or in a web server such as Tomcat. This \
> solution also supports both the JSR 181 annotated classes and the regular \
> AAR-files. To fully integrate Axis2 with Spring I have overridden the \
> SimpleAxis2Server class used by the standard stand-alone run-time. A full listing \
> of this class is included in my example application. The important stuff is in line \
> 21 up to 36. First it determines the absolute path of the repository and config \
> location parameters. Then it passes those to the AxisRunner constructor (lines 10 \
> to 13) and starts the server. After it successfully starts the Axis2 server it \
> returns the bean to the Spring Container. After the creation of the bean it will \
> invoke setDeployedWebservices (lines 46 to 51) which will cycle through the passed \
> webservice classes and deploy them at the created run-time. That's it! No \
> additional configuration or packaging is needed. If the Spring container starts up, \
> so does the Axis2 run-time and the webservices get deployed. The needed \
> configuration in order to integrate Axis2 is quite simple. Below is a complete \
> listing of my applicationContext.xml (Spring 2.5.6): <?xml version="1.0" \
> encoding="UTF-8"?> <beans xmlns="namespace stuff">
>
> <bean name="axisServer" class="com.example.poc.server.AxisRunner" \
> factory-method="create" scope="singleton"> <constructor-arg value="repository" />
> <constructor-arg value="config/axis2.xml" />
> <property name="deployedWebservices">
> <props>
> <prop key="WeatherSpringService">
> com.example.poc.webservice.WeatherSpringService
> </prop>
> </props>
> </property>
> </bean>
> </beans>
> With a little bit more effort I think it's also possible to integrate this solution \
> with the Spring component scan, making it possible to annotate the webservice \
> classes and the run-time with @component. I have tested my war-project with Tomcat \
> 6 and Sun Webserver 7.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic