终于将官方网站的osgi demo跑起来了

本文记录了一次使用Maven成功部署Virgo应用的过程,并详细解释了解决部署问题的具体步骤,包括如何正确生成MANIFEST.MF文件及处理版本冲突。
非常感谢冰あ辉  

冰あ辉  11:24:46
每个项目中最重要的就是这个MANIFEST.MF
template.mf这个的目的也是为了生成MANIFEST.MF
浩然  11:25:28
是的,我都是用maven来生成MANIFEST.MF文件

冰あ辉  14:08:23
还在吗
浩然  14:08:25
在的
冰あ辉  14:08:39

官方demo我部署成功了
浩然  14:08:46

怎么实现的呢?
浩然  14:09:53
我把官方demo导入到eclipse中去的时候,出现了错误
冰あ辉  14:10:12

这个不是错

正常的

eclipse的m2e有时候认不到,不代表是错
浩然  14:10:59
但是执行mvn install的时候,打不了包
冰あ辉  14:11:10
你只要执行mvn install 能够成功说明就没问题
你按照我说的顺序来试试
浩然  14:11:33
好的。
冰あ辉  14:11:44
先install greenpages.parent
浩然  14:11:47
可以了
冰あ辉  14:12:02
install greenpages.db
浩然  14:12:00
BUILD SUCCESS
冰あ辉  14:12:20
install greenpages.core
浩然  14:12:33
OK
冰あ辉  14:12:44
install greenpages.jpa
浩然  14:12:54
OK
冰あ辉  14:13:21
install greenpages.web
浩然  14:13:27
可以了
冰あ辉  14:13:39
install greenpages
greenpages-3.0.0.RELEASE.par 这个就是要部署的项目
成功没
浩然  14:14:07
成功了
冰あ辉  14:14:37
启动virgo之前要先把这个项目需要的bundle拷贝到
我发给你
免得你去仓库拿
浩然  14:15:13
放到ext下也是可以的吧
冰あ辉  14:15:24

ext是系统文件
最好分开放
浩然  14:16:04
virgo 自带的是spring 3.1,我要是用spring 3.2,怎么处理呢
冰あ辉  14:16:16
模板文件jar,验证jar,数据源jar,持久层jar
把系统文件里面的版本换了
3.1和3.2应该没多大区别吧
浩然  14:16:54
ext里面的换了就可以了呀,servicemix还不能这样搞
冰あ辉  14:17:30
你在启动服务器的时候会自动去加载的
其实3.1和3.2你都可以同时存在
14:17:34
成功接收文件“usr.rar” 
 
打开文件   打开所在文件夹   上传到微云 
浩然  14:17:38
嗯,是的。
冰あ辉  14:17:52
只要你的项目指明了用3.2
浩然  14:18:00
virgo 3.6与3.0.3有很大的区别呀
冰あ辉  14:18:27
不知道
很早前我用的3.0.3
我对比了哈,多了很多jar
你现在启动服务器
浩然  14:19:21
正在启动,
冰あ辉  14:19:29
然后通过admin页面上传demo就可以了
浩然  14:19:53
放到pickup里面能够自动加载吗

冰あ辉  14:20:29
应该可以吧
我没试
浩然  14:20:25
可以自动加载
冰あ辉  14:20:54

http://localhost:8080/greenpages/app/home.htm
你访问试试
浩然  14:21:14

冰あ辉  14:21:31

浩然  14:21:49
谢谢。这个问题纠结了我半年了。
冰あ辉  14:22:01
呵呵
我有1年没弄这个了
浩然  14:22:50
我们的产品有很多个,产品之间关联性很多,所以一直想用osgi来设计这个架构
### OSGi 架构 示例代码 #### 创建简单OSGi 束 (Bundle) 为了创建一个基本的 OSGi 应用程序,首先需要定义两个主要部分:提供服务的服务端和服务消费者客户端。 ##### 1. 定义接口 `GreetingService` ```java package org.example.service; public interface GreetingService { String greet(String name); } ``` ##### 2. 实现服务 `SimpleGreetingServiceImpl` ```java package org.example.impl; import org.example.service.GreetingService; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; public class SimpleGreetingServiceImpl implements GreetingService, BundleActivator { private ServiceRegistration<GreetingService> registration; @Override public void start(BundleContext context) throws Exception { System.out.println("Starting the greeting service..."); registration = context.registerService(GreetingService.class, this, null); } @Override public void stop(BundleContext context) throws Exception { System.out.println("Stopping the greeting service..."); if (registration != null) { registration.unregister(); } } @Override public String greet(String name) { return "Hello, " + name; } } ``` ##### 3. 编写客户端来消费该服务 ```java package org.example.client; import org.example.service.GreetingService; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; public class ClientActivator implements BundleActivator { private ServiceTracker<GreetingService, GreetingService> tracker; @Override public void start(BundleContext context) throws Exception { System.out.println("Client starting..."); // Track and get an instance of our service when it becomes available. tracker = new ServiceTracker<>(context, GreetingService.class, null); tracker.open(); GreetingService service = tracker.getService(); if (service != null) { System.out.println(service.greet("World")); } else { System.out.println("No greeting service found."); } } @Override public void stop(BundleContext context) throws Exception { System.out.println("Client stopping..."); if (tracker != null) { tracker.close(); } } } ``` 上述例子展示了如何在一个典型的 OSGi 环境下定义、发布以及使用服务[^2]。此案例中,`SimpleGreetingServiceImpl` 类实现了 `GreetingService` 接口,并作为 OSGi 服务被注册到了框架内;与此同时,另一个 bundle (`ClientActivator`) 则负责追踪并调用了这个已发布的服务实例。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值