指定要在CXF中使用的初始上下文工厂

时间:2017-09-13 11:00:42

标签: testing jax-rs cxf jndi

我正在使用CXF Local Tranport进行测试,遵循本教程:

https://cwiki.apache.org/confluence/display/CXF20DOC/JAXRS+Testing

但是我收到了这个错误: javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或者在applet参数中指定类名,或者在应用程序资源文件中指定:java.naming.factory .initial

这是我在创建本地服务器时尝试过的一段代码:

private static void startServer() throws Exception {
    JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();

    factory.setAddress(ENDPOINT_ADDRESS);

    List<Class<?>> resourceClasses = new ArrayList<Class<?>>();
    // ..
    factory.setResourceClasses(resourceClasses);
    List<ResourceProvider> resourceProviders = new ArrayList<>();
    // ..
    factory.setResourceProviders(resourceProviders);

    final Hashtable<String, Object> jndiProperties = new Hashtable<String, Object>();
    jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");

    final Context context = new InitialContext(jndiProperties);

    List<Object> providers = new ArrayList<Object>();
    providers.add(context);
    // ..
    factory.setProviders(providers);

    server = factory.create();
    server.start();
}

但它不起作用。

我使用WebClient测试jax-rs Web服务(请参阅教程),但是当服务器启动此代码时,它会引发异常: //网络服务方法

javax.naming.Context initialContext = new InitialContext();
TMM tmm = (TMM) initialContext.lookup("java:app/cos/TMM");

0 个答案:

没有答案