如何使用 API 使用 WSO2 可配置治理工件添加新工件?
How to add A New Artifact use WSO2 Configurable Governance Artifacts with API?
我想添加一个新的工件,使用 WSO2 可配置治理工件 API,写代码:
public static Registry getRegistry() {
Registry governanceRegistry = null;
String url = "https://localhost:9443/registry";
String username = "admin";
String password = "admin";
System.setProperty("carbon.repo.write.mode", "true");
try {
RemoteRegistry rootRegistry = new RemoteRegistry(new URL(url), username,
password);
governanceRegistry = GovernanceUtils.getGovernanceUserRegistry(
rootRegistry, username);
} catch (RegistryException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return governanceRegistry;
}
public static void main(String[] args) {
try {
Registry registry = WSRegistryClient.getRegistry();
GovernanceUtils.loadGovernanceArtifacts((UserRegistry) registry);
GenericArtifactManager artifactManager = new GenericArtifactManager(
registry, "endpoint");
GenericArtifact artifact = artifactManager
.newGovernanceArtifact(new QName("http://www.example.com/", "endpoint_1"));
artifact.setAttribute("Name", "endpoint");
artifact.setAttribute("Version", "1.0.0");
artifact.setAttribute("Address", "http://www.google.com");
artifactManager.addGenericArtifact(artifact);
} catch (Exception e) {
e.printStackTrace();
}
}
1.
" "endpoint" 退出工件类型如下:
<artifactType type="application/vnd.wso2-endpoint+xml" shortName="endpoint" singularLabel="Endpoint"
pluralLabel="Endpoints" hasNamespace="false" iconSet="2">
<storagePath>/trunk/endpoints/@{overview_name}</storagePath>
<nameAttribute>overview_name</nameAttribute>
<lifecycle>EndpointLifeCycle</lifecycle>
<ui>
<list>
<column name="Name">
<data type="path" value="overview_name" href="@{storagePath}"/>
</column>
<column name="Version">
<data type="path" value="overview_version" href="@{storagePath}"/>
</column>
</list>
</ui>
<content>
<table name="Overview">
<field type="text" required="true" readonly="true">
<name>Name</name>
</field>
<field type="text" required="true">
<name>Version</name>
</field>
<field type="text" required="true">
<name>Address</name>
</field>
<field type="text">
<name>Environment</name>
</field>
</table>
</content>
</artifactType>
2.
当我运行代码但出现异常时:
org.wso2.carbon.governance.api.exception.GovernanceException: Version is a required field, Please provide a value for this parameter.
at org.wso2.carbon.governance.api.common.GovernanceArtifactManager.validateArtifact(GovernanceArtifactManager.java:940)
at org.wso2.carbon.governance.api.common.GovernanceArtifactManager.addGovernanceArtifact(GovernanceArtifactManager.java:184)
at org.wso2.carbon.governance.api.generic.GenericArtifactManager.addGenericArtifact(GenericArtifactManager.java:217)
at cn.oge.kkm.alg.template.AlgTemplateHandler.put(AlgTemplateHandler.java:66)
at org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.put(HandlerManager.java:2503)
at org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.put(HandlerLifecycleManager.java:945)
at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.put(EmbeddedRegistry.java:697)
at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.put(CacheBackedRegistry.java:550)
at org.wso2.carbon.registry.core.session.UserRegistry.putInternal(UserRegistry.java:827)
at org.wso2.carbon.registry.core.session.UserRegistry.access00(UserRegistry.java:60)
at org.wso2.carbon.registry.core.session.UserRegistry.run(UserRegistry.java:803)
at org.wso2.carbon.registry.core.session.UserRegistry.run(UserRegistry.java:800)
at java.security.AccessController.doPrivileged(Native Method)
at org.wso2.carbon.registry.core.session.UserRegistry.put(UserRegistry.java:800)
at org.wso2.carbon.registry.resource.services.utils.AddResourceUtil.addResource(AddResourceUtil.java:88)
at org.wso2.carbon.registry.resource.services.ResourceService.addResource(ResourceService.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
我错过了什么吗?或者有什么问题将可配置治理工件与 API 一起使用?提前致谢!
通过查看您的代码,我认为您犯了一个小错误。请更改以下代码,
artifact.setAttribute("overview_name", "endpoint");
artifact.setAttribute("overview_version", "1.0.0");
artifact.setAttribute("overview_address", "http://www.google.com");
除了不要使用snapshot版本,请尽量使用release版本。
还有一个更简单的方法,你可以使用Governance REST API来添加一个工件。
我想添加一个新的工件,使用 WSO2 可配置治理工件 API,写代码:
public static Registry getRegistry() {
Registry governanceRegistry = null;
String url = "https://localhost:9443/registry";
String username = "admin";
String password = "admin";
System.setProperty("carbon.repo.write.mode", "true");
try {
RemoteRegistry rootRegistry = new RemoteRegistry(new URL(url), username,
password);
governanceRegistry = GovernanceUtils.getGovernanceUserRegistry(
rootRegistry, username);
} catch (RegistryException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return governanceRegistry;
}
public static void main(String[] args) {
try {
Registry registry = WSRegistryClient.getRegistry();
GovernanceUtils.loadGovernanceArtifacts((UserRegistry) registry);
GenericArtifactManager artifactManager = new GenericArtifactManager(
registry, "endpoint");
GenericArtifact artifact = artifactManager
.newGovernanceArtifact(new QName("http://www.example.com/", "endpoint_1"));
artifact.setAttribute("Name", "endpoint");
artifact.setAttribute("Version", "1.0.0");
artifact.setAttribute("Address", "http://www.google.com");
artifactManager.addGenericArtifact(artifact);
} catch (Exception e) {
e.printStackTrace();
}
}
-
1.
" "endpoint" 退出工件类型如下:
<artifactType type="application/vnd.wso2-endpoint+xml" shortName="endpoint" singularLabel="Endpoint"
pluralLabel="Endpoints" hasNamespace="false" iconSet="2">
<storagePath>/trunk/endpoints/@{overview_name}</storagePath>
<nameAttribute>overview_name</nameAttribute>
<lifecycle>EndpointLifeCycle</lifecycle>
<ui>
<list>
<column name="Name">
<data type="path" value="overview_name" href="@{storagePath}"/>
</column>
<column name="Version">
<data type="path" value="overview_version" href="@{storagePath}"/>
</column>
</list>
</ui>
<content>
<table name="Overview">
<field type="text" required="true" readonly="true">
<name>Name</name>
</field>
<field type="text" required="true">
<name>Version</name>
</field>
<field type="text" required="true">
<name>Address</name>
</field>
<field type="text">
<name>Environment</name>
</field>
</table>
</content>
</artifactType>
-
2.
当我运行代码但出现异常时:
org.wso2.carbon.governance.api.exception.GovernanceException: Version is a required field, Please provide a value for this parameter.
at org.wso2.carbon.governance.api.common.GovernanceArtifactManager.validateArtifact(GovernanceArtifactManager.java:940)
at org.wso2.carbon.governance.api.common.GovernanceArtifactManager.addGovernanceArtifact(GovernanceArtifactManager.java:184)
at org.wso2.carbon.governance.api.generic.GenericArtifactManager.addGenericArtifact(GenericArtifactManager.java:217)
at cn.oge.kkm.alg.template.AlgTemplateHandler.put(AlgTemplateHandler.java:66)
at org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.put(HandlerManager.java:2503)
at org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.put(HandlerLifecycleManager.java:945)
at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.put(EmbeddedRegistry.java:697)
at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.put(CacheBackedRegistry.java:550)
at org.wso2.carbon.registry.core.session.UserRegistry.putInternal(UserRegistry.java:827)
at org.wso2.carbon.registry.core.session.UserRegistry.access00(UserRegistry.java:60)
at org.wso2.carbon.registry.core.session.UserRegistry.run(UserRegistry.java:803)
at org.wso2.carbon.registry.core.session.UserRegistry.run(UserRegistry.java:800)
at java.security.AccessController.doPrivileged(Native Method)
at org.wso2.carbon.registry.core.session.UserRegistry.put(UserRegistry.java:800)
at org.wso2.carbon.registry.resource.services.utils.AddResourceUtil.addResource(AddResourceUtil.java:88)
at org.wso2.carbon.registry.resource.services.ResourceService.addResource(ResourceService.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
我错过了什么吗?或者有什么问题将可配置治理工件与 API 一起使用?提前致谢!
通过查看您的代码,我认为您犯了一个小错误。请更改以下代码,
artifact.setAttribute("overview_name", "endpoint");
artifact.setAttribute("overview_version", "1.0.0");
artifact.setAttribute("overview_address", "http://www.google.com");
除了不要使用snapshot版本,请尽量使用release版本。
还有一个更简单的方法,你可以使用Governance REST API来添加一个工件。