[xfire 1.2.6] try out xfire 1.2.6
1. server side:
(1) To demonstrate there's no issue with transferring objects, create a TestObj first:
(2) Create service interface and implementation class
(3) define a spring.xml under the WEB-INF folder
(4) define xfire-servlet.xml under the WEB-INF folder
(5) define web.xml
(6) here's a list of libraries used
2. client side
(1) Normal client:
(2) Spring Client:
i. define spring.xml
ii. how to revoke:
(3) list of libraries used:
(1) To demonstrate there's no issue with transferring objects, create a TestObj first:
package ws;
public class TestObj {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2) Create service interface and implementation class
package ws;
public interface TestService {
TestObj sayHello(TestObj obj);
}
package ws;
public class TestServiceImpl implements TestService {
public TestObj sayHello(TestObj obj) {
obj.setName("hello" + obj.getName());
return obj;
}
}
(3) define a spring.xml under the WEB-INF folder
<?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="testBean" class="ws.TestServiceImpl"/>
</beans>
(4) define xfire-servlet.xml under the WEB-INF folder
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/TestService">
<ref bean="test" />
</entry>
</map>
</property>
</bean>
<bean id="test"
class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory" />
</property>
<property name="xfire">
<ref bean="xfire" />
</property>
<property name="serviceBean">
<ref bean="testBean" />
</property>
<property name="serviceClass">
<value>ws.TestService</value>
</property>
</bean>
</beans>
(5) define web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring.xml
classpath:/org/codehaus/xfire/spring/xfire.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
(6) here's a list of libraries used
activation-1.1.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
jdom-1.0.jar
spring-1.2.6.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xbean-spring-2.8.jar
xfire-all-1.2.6.jar
2. client side
(1) Normal client:
package client;
import java.net.MalformedURLException;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import ws.TestObj;
import ws.TestService;
public class NormalClient {
public static void main(String[] args){
String serviceURL="http://localhost:8080/XFire_Server/TestService";
Service serviceModel = new ObjectServiceFactory().create(TestService.class,null,serviceURL,null);
XFireProxyFactory serviceFactory = new XFireProxyFactory();
TestService service = null;
try {
service = (TestService) serviceFactory.create(serviceModel, serviceURL);
TestObj obj = new TestObj();
obj.setName("example");
System.out.println(service.sayHello(obj).getName());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
(2) Spring Client:
i. define spring.xml
<?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="testWebService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
<property name="serviceClass">
<value>ws.TestService</value>
</property>
<property name="wsdlDocumentUrl">
<value>http://localhost:8080/XFire_Server/TestService?WSDL</value>
</property>
</bean>
</beans>
ii. how to revoke:
package client;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import ws.TestObj;
import ws.TestService;
public class SpringClient {
public static void main(String[] args){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"client/spring.xml"});
TestService client = (TestService)context.getBean("testWebService");
TestObj obj = new TestObj();
obj.setName("example");
System.out.println(client.sayHello(obj).getName());
}
}
(3) list of libraries used:
activation-1.1.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
jdom-1.0.jar
spring-1.2.6.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xfire-all-1.2.6.jar
XmlSchema-1.1.jar