WEB开发网
开发学院软件开发Java 以 OSGi 包的形式开发和部署 Web 服务 阅读

以 OSGi 包的形式开发和部署 Web 服务

 2010-03-31 00:00:00 来源:WEB开发网   
核心提示: ??DictionaryServiceresponse=whatisthismeans...由于 Eclipse 和 Tomcat 在两个不同的 JVM 中运行,我们已经用一个分布式客户机测试了服务包,以 OSGi 包的形式开发和部署 Web 服务(7),注意:把 Tomcat 的 HTTP 端

?? 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; 
 } 
 
} 

上一页  2 3 4 5 6 7 8 9  下一页

Tags:OSGi 形式 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接