Как получить доступ к параметрам сервиса внутри кода скелета оси при разработке веб-сервиса с использованием axis2c?

Я занимаюсь разработкой веб-службы SOAP с использованием apache axis2c на c ++. я использую services.xml установить некоторые сервис-специфические параметры & Мне нужно получить значение этих параметров внутри axis2_svc_skeleton интерфейс (например, в axis2_get_instance функция). Но я не знаю, как я могу это сделать?
Вот часть моей службы.xml & Я хочу получить доступ к значению myreadonlyparam в моем коде:

<service name="myservice">
<parameter name="myreadonlyparam" locked="xsd:true">myparamvalue</parameter>
...
</service>

и это часть моего кода

AXIS2_EXPORT int axis2_get_instance( axis2_svc_skeleton_t ** inst, const axutil_env_t * env )
{
*inst = axis2_myservice_create(env);
if (!(*inst))
{
return AXIS2_FAILURE;
}
//HERE I NEED SERVICE PARAMETER VALUE
...
}

Любая идея?

0

Решение

Я боюсь, что невозможно получить конфигурацию службы без axis2_conf объект. axis2_conf объект доступен только в init_with_conf функция.

Пример того, как получить служебный параметр:

int AXIS2_CALL my_service_init_with_conf(
axis2_svc_skeleton_t* skel, const axutil_env_t* env, axis2_conf* conf)
{
const axis2_char_t* service_name = "myservice";

/* get service by name */
struct axis2_svc* service = axis2_conf_get_svc(conf, env, service_name);

/* get service param */
axutil_param_t* param = axis2_svc_get_param(service, env, "myreadonlyparam");

/* get param value */
const char* value = (const char*) axutil_param_get_value(param, env);

printf("PARAM VALUE: %s\n", value);

return AXIS2_SUCCESS;
}

/* Skeleton options */
static axis2_svc_skeleton_ops_t skel_ops =
{
my_service_init,
my_service_invoke,
my_service_on_fault,
my_service_free,
my_service_init_with_conf
};AXIS2_EXPORT int axis2_get_instance(
axis2_svc_skeleton** skel, axutil_env_t* env)
{
*skel = (axis2_svc_skeleton_t*) AXIS2_MALLOC(
env->allocator, sizeof(axis2_svc_skeleton_t));

if (!*skel)
return AXIS2_FAILURE;

(*skel)->ops = &skel_ops;
(*skel)->func_array = NULL;

return AXIS2_SUCCESS;
}

Выход:

$ ./axis2_http_server
PARAM VALUE: myparamvalue
Запущен простой HTTP-сервер Axis2 ...
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]