package com.lqy.test;
import javax.servlet.Servlet;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.service.invoker.BeanInvoker;
import org.codehaus.xfire.transport.http.XFireServlet;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.Configuration;
import org.eclipse.jetty.webapp.WebAppContext;
public class JettyService {
public static void start() throws Exception{
ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
Service service = serviceFactory.create(HelloService.class);
service.setInvoker(new BeanInvoker(new HelloServiceImpl()));
//注册服务
XFire xfire = XFireFactory.newInstance().getXFire();
xfire.getServiceRegistry().register(service);
//无web.xml的WebAppContext
WebAppContext webApp = new WebAppContext();
webApp.setContextPath("/service");
webApp.setConfigurations(new Configuration[0]);
//加载XFireServlet
webApp.addServlet((Class<? extends Servlet>) XFireServlet.class, "/*");
Server server = new Server();
QueuedThreadPool threadPool = new QueuedThreadPool();
//设置线程池
threadPool.setMaxThreads(100);
server.setThreadPool(threadPool);
//设置连接参数
Connector connector = new SelectChannelConnector();
// 设置监听端口
connector.setPort(8000);
server.setConnectors(new Connector[] { connector });
//发布webapp
server.setHandler(webApp);
server.setStopAtShutdown(true);
server.setSendServerVersion(true);
server.start();
server.join();
}
public static void main(String[] args){
try {
JettyService.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.lqy.test;
public interface HelloService {
public void say();
}
package com.lqy.test;
public class HelloServiceImpl implements HelloService{
@Override
public void say() {
System.out.println("hello");
}
}
测试:
打开ie浏览器, 在地址栏输入http://localhost:8000/service/
就可以看到熟悉的webservice生成wsdl画面了。
import javax.servlet.Servlet;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.service.invoker.BeanInvoker;
import org.codehaus.xfire.transport.http.XFireServlet;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.Configuration;
import org.eclipse.jetty.webapp.WebAppContext;
public class JettyService {
public static void start() throws Exception{
ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
Service service = serviceFactory.create(HelloService.class);
service.setInvoker(new BeanInvoker(new HelloServiceImpl()));
//注册服务
XFire xfire = XFireFactory.newInstance().getXFire();
xfire.getServiceRegistry().register(service);
//无web.xml的WebAppContext
WebAppContext webApp = new WebAppContext();
webApp.setContextPath("/service");
webApp.setConfigurations(new Configuration[0]);
//加载XFireServlet
webApp.addServlet((Class<? extends Servlet>) XFireServlet.class, "/*");
Server server = new Server();
QueuedThreadPool threadPool = new QueuedThreadPool();
//设置线程池
threadPool.setMaxThreads(100);
server.setThreadPool(threadPool);
//设置连接参数
Connector connector = new SelectChannelConnector();
// 设置监听端口
connector.setPort(8000);
server.setConnectors(new Connector[] { connector });
//发布webapp
server.setHandler(webApp);
server.setStopAtShutdown(true);
server.setSendServerVersion(true);
server.start();
server.join();
}
public static void main(String[] args){
try {
JettyService.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.lqy.test;
public interface HelloService {
public void say();
}
package com.lqy.test;
public class HelloServiceImpl implements HelloService{
@Override
public void say() {
System.out.println("hello");
}
}
测试:
打开ie浏览器, 在地址栏输入http://localhost:8000/service/
就可以看到熟悉的webservice生成wsdl画面了。