distributed OSGI demo
今天继续《OSGi原理与最佳实践》。看到第四章。做 HelloWorld-cxf 的样例
照着样例敲来着,整个样例敲完了,执行。一直报错,
----------------这里是解决方法------------------
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/hello_world");
registration = bundleContext.registerService(HelloWorldServiceInterfaces.class.getName(),
new HelloWorldImple(), props);
把上面的内容改成以下
Dictionary<String, String> props = new Hashtable<String, String>();
<span style="color:#ff0000;">props.put("service.exported.interfaces", "*");
props.put("service.exported.configs", "org.apache.cxf.ws");
props.put("org.apache.cxf.ws.address", "http://localhost:9000/hello_world");</span>
registration = bundleContext.registerService(HelloWorldServiceInterfaces.class.getName(),
new HelloWorldImple(), props);
bundle配置例如以下,我没有单独到处servlet和osgi,直接用的eclipse里面的
---------------以下是故事。能够不看-------------------
不行,复制原来的代码直接贴过去(网上找的资源)还是一样。
各种缺包的提示。尝试着加入各种bundle。最后都要吐来了。还是提示缺。并且是越来越缺,全然一个无底洞。一定那里出问题了。
删除项目又一次建,还好,这次不提示缺包了,这让我想起了,上一篇里面提到的,有可能是bundle以来问题,应该简单操作一下即可了,详细操作请查看
http://blog.csdn.net/q821424508/article/details/46604279
言归正传,说下今天的问题。
把项目弄好之后启动项目。没有错误提示,訪问的时候抱404错误,控制台提示httpservice startup at 8080 ,这事什么意思,我代码里不是这么写的
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/hello_world");
registration = bundleContext.registerService(HelloWorldServiceInterfaces.class.getName(),
new HelloWorldImple(), props);
这问题就来了。启动不报错。可是訪问不到路径。一定还是那里配置错误,
亲,没错的,代码都是复制过来的。那问题可有可能是版本号的问题,我的环境。cxf插件下载的事最新的cxf-dosgi-ri-singlebundle-distribution-1.2.jar,
osgi也是比书里面的新,
别问我为什么不依照书里面的版本号弄。我也想。仅仅是有些资源时找不到的。所以就依照自己eclipse的默认版本号来了。
说到版本号不同,那就找下官网吧。
Service Provider properties For Configuring SOAP-based services and consumers
Note: for backwards compatibility old values marked below are still supported.
|
Property Name |
Data Type |
Example |
Description |
|---|---|---|---|
|
service.exported.interfaces |
String |
|
Denotes the interfaces to be exposed remotely. This is a comma-separated list of fully qualified Java interfaces that should be made available remotely. A special value of |
|
service.exported.configs (previously:osgi.remote.configuration.type) |
String |
|
Specifies the mechanism for configuring the service exposure. Possible values:
|
这个事官网的,
Note: for backwards compatibility old values marked below are still supported.
这句翻译过来,应该是为了兼容老的功能,以下呗标记出来的依旧支持吧,高中水平。不知道是不是这么翻译的。
可是依照翻译来说,我依照书上敲(别扣字眼。是复制来的我知道)的代码应该没问题
继续看
org.apache.cxf.ws configuration type
When the service.exported.configs=org.apache.cxf.ws (or osgi.remote.configuration.type=pojo) property is specified, the following properties may also be specified.
突然来了一句,这句的大概意思是 假设service.exported.configs=org.apache.cxf.ws (or osgi.remote.configuration.type=pojo)
这个被指定了,
那么以下的也必须被设置,
我仅仅能呵呵了 。
|
Property Name |
Data Type |
Example |
Description |
|---|---|---|---|
|
org.apache.cxf.ws.address |
String |
{{ }} |
The address at which the service with be made available remotely. If this property is not specified, this defaults to {{ http://localhost:9000/fully/qualified/ClassName }}. |
|
org.apache.cxf.ws.httpservice.context |
String |
|
When this property is specified, the OSGi HTTP Service is used to expose the service, rather than a dedicated Jetty HTTP Server. This property doesn't allow the specification of a port number, as this is provided by the HTTP Service. The Distributed OSGi distributions http://wiki.ops4j.org/display/paxweb/Configuration , however other OSGi HTTP Service implementations are potentially configured differently. |
|
org.apache.cxf.ws.frontend |
String |
|
The CXF frontend which will be used to create endpoints. Defaults to 'simple' which is an Aegis-based simple frontend. Note that for JAXWS to work a javax.jws.* has to be imported into the interface and/or implementation and client bundles for annotations like |
|
org.apache.cxf.ws.databinding |
String |
|
Supported values are 'aegis and 'jaxb', defaults to 'aegis'. Note that for JAXB to work JAXB packages like javax.xml.bind.annotation.* have to be imported |
|
org.apache.cxf.ws.wsdl.location |
String |
|
WSDL location |
|
org.apache.cxf.ws.wsdl.service.ns |
String |
{{ }} |
WSDL service namespace |
|
org.apache.cxf.ws.wsdl.service.name |
String |
|
WSDL service name |
|
org.apache.cxf.ws.wsdl.port.name |
String |
|
WSDL port name |
|
org.apache.cxf.ws.in.interceptors |
String, String[], List |
List of CXF in interceptors |
|
|
org.apache.cxf.ws.out.interceptors |
String, String[], List |
List of CXF out interceptors |
|
|
org.apache.cxf.ws.in.fault.interceptors |
String, String[], List |
List of CXF in fault interceptors |
|
|
org.apache.cxf.ws.out.fault.interceptors |
String, String[], List |
List of CXF out fault interceptors |
|
|
org.apache.cxf.ws.features |
String, String[], List, Object |
List of CXF out features |
Service Provider properties For Configuring RESTful JAXRS-based endpoints and consumers
org.apache.cxf.rs configuration type
When the service.exported.configs=org.apache.cxf.rs property is specified, the following properties may also be specified.
|
Property Name |
Data Type |
Example |
Description |
|---|---|---|---|
|
org.apache.cxf.rs.address |
String |
{{ }} |
The address at which the service with be made available remotely. If this property is not specified, this defaults to {{ http://localhost:9000/fully/qualified/ClassName }}. |
|
org.apache.cxf.rs.httpservice.context |
String |
|
When this property is specified, the OSGi HTTP Service which is used to expose the service, rather than a dedicated Jetty HTTP Server. By default, absolute address may look like 'http://localhost:8080/auction' |
|
org.apache.cxf.rs.provider |
Boolean |
|
Can be used to identify a global JAXRS provider as CXF-compatible |
|
org.apache.cxf.rs.provider.expected |
Boolean |
|
Can be used to require global providers to set an 'org.apache.cxf.rs.provider' property with a value 'true'. |
|
org.apache.cxf.rs.provider.globalquery |
Boolean |
|
Can be used to disable queries for global providers, defaults to 'true'. |
|
org.apache.cxf.rs.databinding |
String |
|
This property has a limited value for JAXRS services as JAXB is supported by default, the only supported value is 'aegis' and it is a shortcut for registering an Aegis provider, see below for more information on how to register custom providers for JAXRS services |
|
org.apache.cxf.rs.wadl.location |
String |
|
WADL location |
|
org.apache.cxf.rs.provider |
String, String[], List |
List of JAX-RS providers |
|
|
org.apache.cxf.rs.in.interceptors |
String, String[], List |
List of CXF in interceptors |
|
|
org.apache.cxf.rs.out.interceptors |
String, String[], List |
List of CXF out interceptors |
|
|
org.apache.cxf.rs.in.fault.interceptors |
String, String[], List |
List of CXF in fault interceptors |
|
|
org.apache.cxf.rs.out.fault.interceptors |
String, String[], List |
List of CXF out fault interceptors |
|
|
org.apache.cxf.rs.features |
String, String[], List |
List of CXF out features |
这么多,怎么设。算了。用最新的吧
Dictionary<String, String> props = new Hashtable<String, String>();
props.put("service.exported.interfaces", "*");
props.put("service.exported.configs", "org.apache.cxf.ws");
props.put("org.apache.cxf.ws.address", "http://localhost:9000/hello_world");
registration = bundleContext.registerService(HelloWorldServiceInterfaces.class.getName(),
new HelloWorldImple(), props);
最新版的java代码是这种,
能执行,能訪问了。
我还是想吐糟一下。明明说要向下兼容,为什么要设置那么多额外的属性。
distributed OSGI demo的更多相关文章
- OSGI动态加载删除Service bundle
OSGi模块化框架是很早就出来的一个插件化框架,最早Eclipse用它而出名,但这些年也没有大热虽然OSGi已经发布了版本1到版本5.现在用的最多的,也是本文讲述基于的是Equinox的OSGi实现, ...
- 使用DOSGi在OSGi环境下发布Web Services
前言 Apache CXF是一个开源的服务框架项目,而Distributed OSGi子项目提供了基于OSGi远程服务规范的分布式组件实现.它使用Web Services,HTTP上的SOAP手段实现 ...
- Build Telemetry for Distributed Services之OpenTracing实践
官网:https://opentracing.io/docs/best-practices/ Best Practices This page aims to illustrate common us ...
- 【HBase】HBase Getting Started(HBase 入门指南)
入门指南 1. 简介 Quickstart 会让你启动和运行一个单节点单机HBase. 2. 快速启动 – 单点HBase 这部分描述单节点单机HBase的配置.一个单例拥有所有的HBase守护线程- ...
- 使用MapReduce实现join操作
在关系型数据库中,要实现join操作是非常方便的,通过sql定义的join原语就可以实现.在hdfs存储的海量数据中,要实现join操作,可以通过HiveQL很方便地实现.不过HiveQL也是转化成 ...
- zhihu spark集群,书籍,论文
spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...
- Spark:大数据的电花火石!
什么是Spark?可能你很多年前就使用过Spark,反正当年我四六级单词都是用的星火系列,没错,星火系列的洋名就是Spark. 当然这里说的Spark指的是Apache Spark,Apache Sp ...
- The Apache HBase™ Reference Guide
以下内容由http://hbase.apache.org/book.html#getting_started节选并改编而来. 运行环境:hadoop-1.0.4,hbase-0.94.22,jdk1. ...
- clickhouse入门到实战及面试
第一章. clickhouse入门 一.ClickHouse介绍 ClickHouse(开源)是一个面向列的数据库管理系统(DBMS),用于在线分析处理查询(OLAP). 关键词:开源.面向列.联机分 ...
随机推荐
- [XJOI-NOI2015-13-C]白黑树
题目大意: 给你一个$n(n\leq300000)$个结点的以$1$为根的树,结点有黑白两种颜色,每个点初始权值为$0$.进行以下2种共$m(m\leq300000)$次操作: 1.给定结点$u$,对 ...
- mongodb培训
写在前面 公司组织的技术培训,虽然刚接触mongodb没多久,算是入门吧,就组织一次mongodb的入门ppt培训.包括nosql的简单介绍,以及mongodb的一些优缺点,最后包括mongodb的一 ...
- ArcObject开发,“异常在 ESRI.ArcGIS.Version.dll”错误
“System.DllNotFoundException”类型的未经处理的异常在 ESRI.ArcGIS.Version.dll 中发生 其他信息: 无法加载 DLL“ArcGISVersion.dl ...
- Android OkHttp经验小结
OkHttp应该是目前最完善,也是相当流行的一个底层网络请求库.Google都在用,所以有必要深入了解一下,刚好最近在重构公司项目的网络层,就顺便梳理一下.———–12.29————最近暂时没有时间详 ...
- 【Todo】Python中文及Java中文问题及解决方法总结 & 及各种字符编码问题跟踪贴
Python中文编码问题看这里吧:http://www.cnblogs.com/charlesblc/p/6159109.html Mysql中文编码问题可以看这篇:http://www.cnblog ...
- MySQL5.6安装图解(windows7/8_64位)
这篇文章主要内容是关于MySQL5.6安装图解,希望通过这篇文章顺利解决大家安装MySQL5.6的问题,再也不用为了安装烦恼. 1. 下载MySQL2. 解压MySQL压缩包将以下载的MySQL压缩包 ...
- RPi Cam v2 之一:基础及牛刀小试
前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 本文使用markdown写成,为获得更好的阅读体验,可以访问我的博客. 1.unboxing & comparison 包 ...
- angular - 如何支持less和sass(scss)
更新时间: (2018-7-26) - 使用angular6.x最新版本 新建项目时,我们指定类型: 示例:ng new projectname -style=sass(scss) 实例:ng new ...
- 升级Jekyll 3.0
每一次的升级都得又一次折腾一次,jekyll也不例外 从jekyll 2.5.2 升级为jekyll 3.0.1 错误一: jekyll 3.0.1 | Error: Permission denie ...
- Android开发人员不得不收集的代码(转)
App相关→AppUtils.java 安装App installApp 卸载指定包名的App uninstallApp 获取当前App信息 getAppInfo 获取所有已安装App信息 getAl ...