以 OSGi 包的形式开发和部署 Web 服务
2010-03-31 00:00:00 来源:WEB开发网?? DictionaryService response = whatisthis means...
由于 Eclipse 和 Tomcat 在两个不同的 JVM 中运行,我们已经用一个分布式客户机测试了服务包。注意:把 Tomcat 的 HTTP 端口设置为 8082,这是因为 Eclipse 已经在使用 8080 部署 cxf Web 服务。
新版的服务包
把 Web 服务作为一个 OSGi 包进行部署的一个有趣功能就是可以同时部署一个 Web 服务的多个版本。现在让我们开发 DictionaryService 的下一个版本:DictionaryServiceV2。DictionaryServiceV2 的 lookupWord 方法能够返回两个字符串数组,一个表示单词的释义,另一个包含该词的同义词。由于我们修改了方法签名,显然已经破坏了现有客户机。通过把修改后的 Web 服务作为一个独立的包进行部署,我们使旧客户机能够继续运行,同时使新客户机能够使用服务的新版本。
在 Eclipse 中切换到 Plug-in Development Perspective,使用三个文件创建一个叫作 DictionaryServiceV2 的新的 Plug-in 项目。这三个文件分别是 Activator.java、DictionaryServiceV2.java 和 DictionaryServiceV2Impl.java,源代码如下所示:
清单 3. DictionaryServiceV2 包代码
package com.demo.cxfdosgi.v2;
import java.util.Dictionary;
import java.util.Hashtable;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
public class Activator implements BundleActivator {
private ServiceRegistration registration;
public void start(BundleContext bc) throws Exception {
Dictionary<String, String> props = new Hashtable<String, String>();
props.put("osgi.remote.interfaces", "*");
props.put("osgi.remote.configuration.type", "pojo");
props.put("osgi.remote.configuration.pojo.address",
"http://localhost:9000/DictionaryServiceV2");
registration = bc.registerService(DictionaryServiceV2.class.getName(),
new DictionaryServiceV2Impl(), props);
}
public void stop(BundleContext context) throws Exception {
registration.unregister();
}
}
package com.demo.cxfdosgi.v2;
public interface DictionaryServiceV2 {
/**
* @param word - String, whose meaning and synonyms are requested
* @return String[] - where String[0] has the word meaning and
* String[1] has synonyms
* @throws Exception
*/
public String[] lookupWord(String word) throws Exception;
}
package com.demo.cxfdosgi.v2;
public class DictionaryServiceV2Impl implements DictionaryServiceV2 {
public String[] lookupWord(String word) throws Exception {
// TODO Auto-generated method stub
String[] result = new String[2];
result[0] = word + " means...";
result[1] = "Synonyms:...";
return result;
}
}
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
- ››开发者或想使用的10个Android2.2新特性
更多精彩
赞助商链接