提交 22689e96 编写于 作者: Z zhangxin10

skywalking埋点API从Git切换到Github上

上级 6f25240d
skywalking-api
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
<profile default="false" name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="true" />
<module name="nio-test" />
<module name="skywalking-api" />
<module name="skywalking-server" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="nio-test" target="1.5" />
<module name="skywalking-api" target="1.5" />
<module name="skywalking-server" target="1.5" />
</bytecodeTargetLevel>
</component>
</project>
\ No newline at end of file
<component name="CopyrightManager">
<settings default="" />
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/../skywalking-server" charset="UTF-8" />
<file url="file://D:/sky-workbench/nio-test" charset="UTF-8" />
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/github/stephenc/findbugs/findbugs-annotations/1.3.9-1/findbugs-annotations-1.3.9-1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/github/stephenc/findbugs/findbugs-annotations/1.3.9-1/findbugs-annotations-1.3.9-1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/github/stephenc/findbugs/findbugs-annotations/1.3.9-1/findbugs-annotations-1.3.9-1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.google.code.findbugs:jsr305:1.3.9">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.google.guava:guava:12.0.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/guava/guava/12.0.1/guava-12.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/guava/guava/12.0.1/guava-12.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/guava/guava/12.0.1/guava-12.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.google.protobuf:protobuf-java:2.5.0">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.jcraft:jsch:0.1.42">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/jcraft/jsch/0.1.42/jsch-0.1.42.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/jcraft/jsch/0.1.42/jsch-0.1.42-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/jcraft/jsch/0.1.42/jsch-0.1.42-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.thoughtworks.paranamer:paranamer:2.3">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/thoughtworks/paranamer/paranamer/2.3/paranamer-2.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/thoughtworks/paranamer/paranamer/2.3/paranamer-2.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/com/thoughtworks/paranamer/paranamer/2.3/paranamer-2.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-beanutils:commons-beanutils:1.7.0">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-beanutils:commons-beanutils-core:1.8.0">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-beanutils/commons-beanutils-core/1.8.0/commons-beanutils-core-1.8.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-beanutils/commons-beanutils-core/1.8.0/commons-beanutils-core-1.8.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-beanutils/commons-beanutils-core/1.8.0/commons-beanutils-core-1.8.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-cli:commons-cli:1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-cli/commons-cli/1.2/commons-cli-1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-cli/commons-cli/1.2/commons-cli-1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-codec:commons-codec:1.9">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-codec/commons-codec/1.9/commons-codec-1.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-codec/commons-codec/1.9/commons-codec-1.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-codec/commons-codec/1.9/commons-codec-1.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-collections:commons-collections:3.2.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-configuration:commons-configuration:1.6">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-configuration/commons-configuration/1.6/commons-configuration-1.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-configuration/commons-configuration/1.6/commons-configuration-1.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-configuration/commons-configuration/1.6/commons-configuration-1.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-digester:commons-digester:1.8">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-digester/commons-digester/1.8/commons-digester-1.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-digester/commons-digester/1.8/commons-digester-1.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-digester/commons-digester/1.8/commons-digester-1.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-el:commons-el:1.0">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-el/commons-el/1.0/commons-el-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-el/commons-el/1.0/commons-el-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-el/commons-el/1.0/commons-el-1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-httpclient:commons-httpclient:3.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-io:commons-io:2.4">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-io/commons-io/2.4/commons-io-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-io/commons-io/2.4/commons-io-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-io/commons-io/2.4/commons-io-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-lang:commons-lang:2.6">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-lang/commons-lang/2.6/commons-lang-2.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-lang/commons-lang/2.6/commons-lang-2.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-logging:commons-logging:1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-logging/commons-logging/1.2/commons-logging-1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-logging/commons-logging/1.2/commons-logging-1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-logging/commons-logging/1.2/commons-logging-1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-net:commons-net:3.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-net/commons-net/3.1/commons-net-3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-net/commons-net/3.1/commons-net-3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/commons-net/commons-net/3.1/commons-net-3.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty:3.6.2.Final">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/io/netty/netty/3.6.2.Final/netty-3.6.2.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/io/netty/netty/3.6.2.Final/netty-3.6.2.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/io/netty/netty/3.6.2.Final/netty-3.6.2.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-all:4.0.32.Final">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/io/netty/netty-all/4.0.32.Final/netty-all-4.0.32.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/io/netty/netty-all/4.0.32.Final/netty-all-4.0.32.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/io/netty/netty-all/4.0.32.Final/netty-all-4.0.32.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: javax.activation:activation:1.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/activation/activation/1.1/activation-1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/activation/activation/1.1/activation-1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/activation/activation/1.1/activation-1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: javax.xml.bind:jaxb-api:2.2.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: javax.xml.stream:stax-api:1.0-2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: junit:junit:3.8.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/3.8.1/junit-3.8.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/3.8.1/junit-3.8.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/3.8.1/junit-3.8.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: junit:junit:4.11">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/4.11/junit-4.11.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/4.11/junit-4.11-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/4.11/junit-4.11-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: junit:junit:4.12">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/4.12/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/4.12/junit-4.12-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/junit/junit/4.12/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: log4j:log4j:1.2.17">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/log4j/log4j/1.2.17/log4j-1.2.17.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/log4j/log4j/1.2.17/log4j-1.2.17-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/log4j/log4j/1.2.17/log4j-1.2.17-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.avro:avro:1.7.4">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/avro/avro/1.7.4/avro-1.7.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/avro/avro/1.7.4/avro-1.7.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/avro/avro/1.7.4/avro-1.7.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.commons:commons-compress:1.4.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.commons:commons-math3:3.1.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/commons/commons-math3/3.1.1/commons-math3-3.1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/commons/commons-math3/3.1.1/commons-math3-3.1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/commons/commons-math3/3.1.1/commons-math3-3.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.directory.api:api-asn1-api:1.0.0-M20">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.directory.api:api-util:1.0.0-M20">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.directory.server:apacheds-i18n:2.0.0-M15">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hadoop:hadoop-annotations:2.5.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-annotations/2.5.1/hadoop-annotations-2.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-annotations/2.5.1/hadoop-annotations-2.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-annotations/2.5.1/hadoop-annotations-2.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hadoop:hadoop-auth:2.5.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-auth/2.5.1/hadoop-auth-2.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-auth/2.5.1/hadoop-auth-2.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-auth/2.5.1/hadoop-auth-2.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hadoop:hadoop-common:2.5.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-common/2.5.1/hadoop-common-2.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-common/2.5.1/hadoop-common-2.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-common/2.5.1/hadoop-common-2.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hadoop:hadoop-mapreduce-client-core:2.5.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-mapreduce-client-core/2.5.1/hadoop-mapreduce-client-core-2.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-mapreduce-client-core/2.5.1/hadoop-mapreduce-client-core-2.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-mapreduce-client-core/2.5.1/hadoop-mapreduce-client-core-2.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hadoop:hadoop-yarn-api:2.5.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-yarn-api/2.5.1/hadoop-yarn-api-2.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-yarn-api/2.5.1/hadoop-yarn-api-2.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-yarn-api/2.5.1/hadoop-yarn-api-2.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hadoop:hadoop-yarn-common:2.5.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-yarn-common/2.5.1/hadoop-yarn-common-2.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-yarn-common/2.5.1/hadoop-yarn-common-2.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hadoop/hadoop-yarn-common/2.5.1/hadoop-yarn-common-2.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hbase:hbase-annotations:1.1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-annotations/1.1.2/hbase-annotations-1.1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-annotations/1.1.2/hbase-annotations-1.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-annotations/1.1.2/hbase-annotations-1.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hbase:hbase-client:1.1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-client/1.1.2/hbase-client-1.1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-client/1.1.2/hbase-client-1.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-client/1.1.2/hbase-client-1.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hbase:hbase-common:1.1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-common/1.1.2/hbase-common-1.1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-common/1.1.2/hbase-common-1.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-common/1.1.2/hbase-common-1.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.hbase:hbase-protocol:1.1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-protocol/1.1.2/hbase-protocol-1.1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-protocol/1.1.2/hbase-protocol-1.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/hbase/hbase-protocol/1.1.2/hbase-protocol-1.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.htrace:htrace-core:3.1.0-incubating">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/htrace/htrace-core/3.1.0-incubating/htrace-core-3.1.0-incubating.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/htrace/htrace-core/3.1.0-incubating/htrace-core-3.1.0-incubating-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/htrace/htrace-core/3.1.0-incubating/htrace-core-3.1.0-incubating-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.httpcomponents:httpclient:4.2.5">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.httpcomponents:httpcore:4.2.4">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/httpcomponents/httpcore/4.2.4/httpcore-4.2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/httpcomponents/httpcore/4.2.4/httpcore-4.2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/httpcomponents/httpcore/4.2.4/httpcore-4.2.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.logging.log4j:log4j-api:2.4.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/logging/log4j/log4j-api/2.4.1/log4j-api-2.4.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/logging/log4j/log4j-api/2.4.1/log4j-api-2.4.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/logging/log4j/log4j-api/2.4.1/log4j-api-2.4.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.logging.log4j:log4j-core:2.4.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/logging/log4j/log4j-core/2.4.1/log4j-core-2.4.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/logging/log4j/log4j-core/2.4.1/log4j-core-2.4.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/logging/log4j/log4j-core/2.4.1/log4j-core-2.4.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.mina:mina-core:2.0.9">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/mina/mina-core/2.0.9/mina-core-2.0.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/mina/mina-core/2.0.9/mina-core-2.0.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/mina/mina-core/2.0.9/mina-core-2.0.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.poi:poi:3.13">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/poi/poi/3.13/poi-3.13.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/poi/poi/3.13/poi-3.13-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/poi/poi/3.13/poi-3.13-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.zookeeper:zookeeper:3.4.6">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.hamcrest:hamcrest-core:1.3">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.jruby.jcodings:jcodings:1.0.8">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/jruby/jcodings/jcodings/1.0.8/jcodings-1.0.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/jruby/jcodings/jcodings/1.0.8/jcodings-1.0.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/jruby/jcodings/jcodings/1.0.8/jcodings-1.0.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.jruby.joni:joni:2.1.2">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/jruby/joni/joni/2.1.2/joni-2.1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/jruby/joni/joni/2.1.2/joni-2.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/jruby/joni/joni/2.1.2/joni-2.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.mortbay.jetty:jetty-util:6.1.26">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/mortbay/jetty/jetty-util/6.1.26/jetty-util-6.1.26.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/mortbay/jetty/jetty-util/6.1.26/jetty-util-6.1.26-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/mortbay/jetty/jetty-util/6.1.26/jetty-util-6.1.26-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.slf4j:slf4j-api:1.7.7">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.slf4j:slf4j-log4j12:1.6.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.tukaani:xz:1.0">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/tukaani/xz/1.0/xz-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/tukaani/xz/1.0/xz-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/tukaani/xz/1.0/xz-1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.xerial.snappy:snappy-java:1.0.4.1">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: xmlenc:xmlenc:0.52">
<CLASSES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/xmlenc/xmlenc/0.52/xmlenc-0.52.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/xmlenc/xmlenc/0.52/xmlenc-0.52-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://D:/Programs/apache-maven-3.2.5/local-repo/xmlenc/xmlenc/0.52/xmlenc-0.52-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/../skywalking-server/pom.xml" />
<option value="D:/sky-workbench/nio-test/pom.xml" />
</list>
</option>
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://D:/sky-workbench/nio-test/nio-test.iml" filepath="D:/sky-workbench/nio-test/nio-test.iml" />
<module fileurl="file://$PROJECT_DIR$/skywalking-api.iml" filepath="$PROJECT_DIR$/skywalking-api.iml" />
<module fileurl="file://$PROJECT_DIR$/../skywalking-server/skywalking-server.iml" filepath="$PROJECT_DIR$/../skywalking-server/skywalking-server.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
\ No newline at end of file
此差异已折叠。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ai.cloud</groupId>
<artifactId>skywalking-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>skywalking-api</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ai.paas.ipaas</groupId>
<artifactId>skywalking-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>skywalking-api</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.0.32.Final</version>
</dependency>
</dependencies>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.poi:poi:3.13" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: commons-codec:commons-codec:1.9" level="project" />
</component>
</module>
\ No newline at end of file
package com.ai.cloud.skywalking.api;
import com.ai.cloud.skywalking.model.ContextData;
public interface IBuriedPointReceiver extends IExceptionHandler {
void afterReceived();
void beforeReceived(ContextData contextData);
}
package com.ai.cloud.skywalking.api;
import com.ai.cloud.skywalking.model.SendData;
import com.ai.cloud.skywalking.model.ContextData;
public interface IBuriedPointSender extends IExceptionHandler {
ContextData beforeSend(SendData data);
void afterSend();
}
package com.ai.cloud.skywalking.api;
public interface IExceptionHandler {
void handleException(Throwable th);
}
package com.ai.cloud.skywalking.buffer;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.sender.DataSenderFactory;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import static com.ai.cloud.skywalking.buffer.config.BufferConfig.*;
public class BufferGroup {
public static CountDownLatch count;
private String groupName;
private Span[] dataBuffer = new Span[GROUP_MAX_SIZE];
AtomicInteger index = new AtomicInteger(0);
public BufferGroup(String groupName) {
this.groupName = groupName;
int k = 0, l;
for (int i = 0; i < MAX_WORKER; i++) {
l = GROUP_MAX_SIZE / MAX_WORKER + k;
if (l + GROUP_MAX_SIZE / MAX_WORKER > GROUP_MAX_SIZE)
l = GROUP_MAX_SIZE;
new ConsumerWorker(k, l).start();
k = l;
}
}
public void save(Span span) {
int i = Math.abs(index.getAndIncrement() % GROUP_MAX_SIZE);
if (dataBuffer[i] != null) {
// TODO 需要上报
System.out.println(span.getLevelId() + "在Group[" + groupName + "]的第" + i + "位冲突");
}
dataBuffer[i] = span;
}
class ConsumerWorker extends Thread {
private int start = 0;
private int end = GROUP_MAX_SIZE;
private StringBuilder builder = new StringBuilder();
private ConsumerWorker(int start, int end) {
this.start = start;
this.end = end;
}
ConsumerWorker() {
}
@Override
public void run() {
int index = 0;
while (true) {
boolean bool = false;
StringBuilder data = new StringBuilder();
for (int i = start; i < end; i++) {
if (dataBuffer[i] == null) {
continue;
}
bool = true;
data.append(dataBuffer[i] + ";");
dataBuffer[i++] = null;
if (i == SEND_MAX_SIZE) {
// TODO 发送失败了怎么办?
DataSenderFactory.getSender().send(data.toString());
i = 0;
data = new StringBuilder();
}
}
if (!bool) {
try {
Thread.sleep(5L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public String getGroupName() {
return groupName;
}
}
package com.ai.cloud.skywalking.buffer;
import com.ai.cloud.skywalking.context.Span;
import java.util.concurrent.ThreadLocalRandom;
import static com.ai.cloud.skywalking.buffer.config.BufferConfig.POOL_MAX_SIZE;
class BufferPool {
private static BufferGroup[] bufferGroups = new BufferGroup[POOL_MAX_SIZE];
static {
for (int i = 0; i < POOL_MAX_SIZE; i++) {
bufferGroups[i] = new BufferGroup("BufferLine-" + i);
}
}
public void save(Span span) {
bufferGroups[ThreadLocalRandom.current().nextInt(0, POOL_MAX_SIZE)].save(span);
}
}
package com.ai.cloud.skywalking.buffer;
import com.ai.cloud.skywalking.context.Span;
public class ContextBuffer {
static BufferPool pool = new BufferPool();
public static void save(Span span) {
pool.save(span);
}
}
package com.ai.cloud.skywalking.buffer.config;
public class BufferConfig {
// 最大消费线程
public static int MAX_WORKER = 5;
// 桶大小
public static int GROUP_MAX_SIZE = 1000;
// 桶数量
public static int POOL_MAX_SIZE = 30;
// 发送的最大长度
public static int MAX_LENGTH = 512 * 1024;
// 发送的最大条数
public static int SEND_MAX_SIZE = 1;
// 最大发送者的连接数阀值
public static int SEND_CONNECTION_THRESHOLD = 2;
}
package com.ai.cloud.skywalking.buriedpoint;
import com.ai.cloud.skywalking.api.IBuriedPointSender;
import com.ai.cloud.skywalking.buffer.ContextBuffer;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.SendData;
import com.ai.cloud.skywalking.util.ContextGenerator;
import com.ai.cloud.skywalking.util.ExceptionHandleUtil;
public class LocalBuriedPointSender implements IBuriedPointSender {
public ContextData beforeSend(SendData sendData) {
Span spanData = ContextGenerator.generateContextFromThreadLocal(sendData);
// 3.将新创建的Context存放到ThreadLocal栈中。
Context.getOrCreate().append(spanData);
// 4 并将当前的Context返回回去
return new ContextData(spanData);
}
public void afterSend() {
// 弹出上下文的栈顶中的元素
Span spanData = Context.getOrCreate().removeLastSpan();
if (spanData == null) {
return;
}
// 填上必要信息
spanData.setCost(System.currentTimeMillis() - spanData.getStartDate());
// 存放到本地发送进程中
ContextBuffer.save(spanData);
}
public void handleException(Throwable e) {
ExceptionHandleUtil.handleException(e);
}
}
package com.ai.cloud.skywalking.buriedpoint;
import com.ai.cloud.skywalking.api.IBuriedPointReceiver;
import com.ai.cloud.skywalking.buffer.ContextBuffer;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.util.ContextGenerator;
import com.ai.cloud.skywalking.util.ExceptionHandleUtil;
public class RPCBuriedPointReceiver implements IBuriedPointReceiver {
public void afterReceived() {
// 获取上下文的栈顶中的元素
Span spanData = Context.getOrCreate().removeLastSpan();
// 填上必要信息
spanData.setCost(System.currentTimeMillis() - spanData.getStartDate());
// 存放到本地发送进程中
ContextBuffer.save(spanData);
}
public void beforeReceived(ContextData context) {
Span spanData = ContextGenerator.generateContextFromContextData(context);
// 存放到上下文
Context.getOrCreate().append(spanData);
}
public void handleException(Throwable e) {
ExceptionHandleUtil.handleException(e);
}
}
package com.ai.cloud.skywalking.buriedpoint;
import com.ai.cloud.skywalking.api.IBuriedPointSender;
import com.ai.cloud.skywalking.buffer.ContextBuffer;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.SendData;
import com.ai.cloud.skywalking.util.ContextGenerator;
import com.ai.cloud.skywalking.util.ExceptionHandleUtil;
public class RPCBuriedPointSender implements IBuriedPointSender {
public ContextData beforeSend(SendData sendData) {
Span spanData = ContextGenerator.generateContextFromThreadLocal(sendData);
// 3.将新创建的Context存放到ThreadLocal栈中。
Context.getOrCreate().append(spanData);
// 4 并将当前的Context返回回去
return new ContextData(new Span(spanData.getTraceId(), spanData.getParentLevel() +
"." + spanData.getLevelId()));
}
public void afterSend() {
// 获取上下文的栈顶中的元素
Span spanData = Context.getOrCreate().removeLastSpan();
if (spanData == null) {
return;
}
// 填上必要信息
spanData.setCost(System.currentTimeMillis() - spanData.getStartDate());
// 存放到本地发送进程中
ContextBuffer.save(spanData);
}
public void handleException(Throwable e) {
ExceptionHandleUtil.handleException(e);
}
}
package com.ai.cloud.skywalking.buriedpoint;
import com.ai.cloud.skywalking.api.IBuriedPointSender;
import com.ai.cloud.skywalking.buffer.ContextBuffer;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.SendData;
import com.ai.cloud.skywalking.util.BuriedPointMachineUtil;
import com.ai.cloud.skywalking.util.ExceptionHandleUtil;
import com.ai.cloud.skywalking.util.TraceIdGenerator;
public class ThreadBuriedPointSender implements IBuriedPointSender {
private Span span;
public ThreadBuriedPointSender(int threadSeqId) {
Span spanData;
// 从ThreadLocal中取出上下文
final Span parentSpanData = Context.getOrCreate().getLastSpan();
if (parentSpanData == null) {
spanData = new Span(TraceIdGenerator.generate());
} else {
// 如果不为空,则将当前的Context存放到上下文
spanData = new Span(parentSpanData.getTraceId());
spanData.setParentLevel(parentSpanData.getParentLevel() + "." + parentSpanData.getLevelId());
spanData.setLevelId(threadSeqId);
}
this.span = spanData;
}
public ContextData beforeSend(SendData sendData) {
if (this.span == null) {
return null;
}
span.setStartDate(System.currentTimeMillis());
span.setViewPointId(sendData.getViewPoint());
span.setProcessNo(BuriedPointMachineUtil.getProcessNo());
Context.getOrCreate().append(span);
return new ContextData(span);
}
public void afterSend() {
Span span = Context.getOrCreate().removeLastSpan();
if (span == null) {
return;
}
// 填上必要信息
span.setCost(System.currentTimeMillis() - span.getStartDate());
// 存放到本地发送进程中
ContextBuffer.save(span);
}
public void handleException(Throwable th) {
ExceptionHandleUtil.handleException(th);
}
}
package com.ai.cloud.skywalking.buriedpoint;
import com.ai.cloud.skywalking.api.IBuriedPointSender;
import com.ai.cloud.skywalking.buffer.ContextBuffer;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.SendData;
import com.ai.cloud.skywalking.util.ContextGenerator;
import com.ai.cloud.skywalking.util.ExceptionHandleUtil;
public class ThreadFactoryBuriedPointSender implements IBuriedPointSender {
public ContextData beforeSend(SendData sendData) {
Span spanData = ContextGenerator.generateContextFromThreadLocal(sendData);
// 3.将新创建的Context存放到ThreadLocal栈中。
Context.getOrCreate().append(spanData);
// 4 并将当前的Context返回回去
return new ContextData(spanData);
}
public void afterSend() {
// 获取上下文的栈顶中的元素
Span spanData = Context.getOrCreate().removeLastSpan();
if (spanData == null) {
return;
}
// 填上必要信息
spanData.setCost(System.currentTimeMillis() - spanData.getStartDate());
// 存放到本地发送进程中
ContextBuffer.save(spanData);
}
public void handleException(Throwable th) {
ExceptionHandleUtil.handleException(th);
}
}
package com.ai.cloud.skywalking.context;
import java.util.Stack;
/**
*/
public class Context {
private static ThreadLocal<SpanStack> spans = new ThreadLocal<SpanStack>();
private static Context context;
private Context() {
spans.set(new SpanStack());
}
public void append(Span span) {
spans.get().push(span);
}
public Span getLastSpan() {
return spans.get().peek();
}
public Span removeLastSpan() {
return spans.get().pop();
}
public static Context getOrCreate() {
if (context == null) {
context = new Context();
}
return context;
}
static class SpanStack {
private Stack<Span> spans = new Stack<Span>();
public Span pop() {
return spans.pop();
}
public void push(Span span) {
spans.push(span);
}
public int size() {
return spans.size();
}
public Span peek() {
if (spans.isEmpty()) {
return null;
}
return spans.peek();
}
public boolean isEmpty() {
return spans.isEmpty();
}
}
}
package com.ai.cloud.skywalking.context;
import com.ai.cloud.skywalking.util.StringUtil;
public class Span {
private String traceId;
private String parentLevel;
private long levelId;
private String viewPointId;
private long startDate;
private long cost;
private String address;
private byte statueCode = 0;
private String exceptionStack;
private byte spanType;
public Span() {
}
public Span(String traceId) {
this.traceId = traceId;
}
public Span(String traceId, String parentLevel) {
this.traceId = traceId;
this.parentLevel = parentLevel;
}
public String getProcessNo() {
return processNo;
}
public void setProcessNo(String processNo) {
this.processNo = processNo;
}
public long getCost() {
return cost;
}
public void setCost(long cost) {
this.cost = cost;
}
public long getStartDate() {
return startDate;
}
public void setStartDate(long startDate) {
this.startDate = startDate;
}
public String getViewPointId() {
return viewPointId;
}
public void setViewPointId(String viewPointId) {
this.viewPointId = viewPointId;
}
public String getParentLevel() {
return parentLevel;
}
public void setParentLevel(String parentLevel) {
this.parentLevel = parentLevel;
}
public long getLevelId() {
return levelId;
}
public void setLevelId(long levelId) {
this.levelId = levelId;
}
public String getTraceId() {
return traceId;
}
public void setTraceId(String traceId) {
this.traceId = traceId;
}
private String processNo;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public byte getStatueCode() {
return statueCode;
}
public void setStatueCode(byte statueCode) {
this.statueCode = statueCode;
}
public String getExceptionStack() {
return exceptionStack;
}
public void setExceptionStack(String exceptionStack) {
this.exceptionStack = exceptionStack;
}
public byte getSpanType() {
return spanType;
}
public void setSpanType(byte spanType) {
this.spanType = spanType;
}
@Override
public String toString() {
StringBuffer stringBuffer = new StringBuffer(traceId + "-" + parentLevel + "-"
+ levelId + "-" + viewPointId + "-" + startDate + "-" + cost +
"-" + address +
"-" + statueCode +
"-" + processNo + "-" + spanType);
if (!StringUtil.isEmpty(exceptionStack)) {
stringBuffer.append("-" + exceptionStack);
}
return stringBuffer.toString();
}
}
package com.ai.cloud.skywalking.model;
import com.ai.cloud.skywalking.context.Span;
public class ContextData {
private String traceId;
private String parentLevel;
private long levelId;
public ContextData(Span span) {
this.traceId = span.getTraceId();
this.parentLevel = span.getParentLevel();
this.levelId = span.getLevelId();
}
public String getTraceId() {
return traceId;
}
public void setTraceId(String traceId) {
this.traceId = traceId;
}
public String getParentLevel() {
return parentLevel;
}
public void setParentLevel(String parentLevel) {
this.parentLevel = parentLevel;
}
public long getLevelId() {
return levelId;
}
public void setLevelId(long levelId) {
this.levelId = levelId;
}
}
package com.ai.cloud.skywalking.model;
public class SendData {
private String viewPoint;
private String URI;
private String businessKey;
private SendData() {
//Non
}
public String getViewPoint() {
return viewPoint;
}
public String getURI() {
return URI;
}
public String getBusinessKey() {
return businessKey;
}
public static BaseSendDataBuilder newBuilder() {
return new BaseSendDataBuilder();
}
public static class BaseSendDataBuilder {
private SendData sendData;
BaseSendDataBuilder() {
sendData = new SendData();
}
public SendData build() {
return sendData;
}
public BaseSendDataBuilder viewPoint(String viewPoint) {
sendData.viewPoint = viewPoint;
return this;
}
public BaseSendDataBuilder URI(String uri) {
sendData.URI = uri;
return this;
}
public BaseSendDataBuilder businessKey(String businessKey) {
sendData.businessKey = businessKey;
return this;
}
}
}
package com.ai.cloud.skywalking.sender;
import com.ai.cloud.skywalking.sender.protocol.ProtocolBuilder;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.StandardSocketOptions;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
public class DataSender {
private SocketChannel socketChannel;
private Selector selector;
private SocketAddress socketAddress;
public DataSender(String ip, int port) throws IOException {
selector = Selector.open();
SocketAddress isa = new InetSocketAddress(ip, port);
//调用open的静态方法创建连接指定的主机的SocketChannel
socketChannel = SocketChannel.open(isa);
//设置该sc已非阻塞的方式工作
socketChannel.configureBlocking(false);
socketChannel.register(selector, SelectionKey.OP_CONNECT);
socketChannel.setOption(StandardSocketOptions.SO_KEEPALIVE, true);
this.socketAddress = isa;
}
public DataSender(SocketAddress address) throws IOException {
selector = Selector.open();
socketChannel = SocketChannel.open(address);
//设置该sc已非阻塞的方式工作
socketChannel.configureBlocking(false);
socketChannel.register(selector, SelectionKey.OP_CONNECT);
socketChannel.setOption(StandardSocketOptions.SO_KEEPALIVE, true);
this.socketAddress = address;
}
/**
* 返回是否发送成功
*
* @param data
* @return
*/
public boolean send(String data) {
// 发送报文
try {
socketChannel.register(selector, SelectionKey.OP_READ);
socketChannel.write(ByteBuffer.wrap(ProtocolBuilder.builder(data)));
return true;
} catch (IOException e) {
// 发送失败 认为不可连接
DataSenderFactory.unRegister(this);
return false;
}
}
public SocketAddress getServerIp() {
return this.socketAddress;
}
}
package com.ai.cloud.skywalking.sender;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
public class DataSenderFactory {
private static List<SocketAddress> socketAddresses = new ArrayList<SocketAddress>();
private static List<SocketAddress> unUsedSocketAddresses = new ArrayList<SocketAddress>();
private static List<DataSender> availableSenders = new ArrayList<DataSender>();
static {
socketAddresses.add(new InetSocketAddress("127.0.0.1", 34000));
socketAddresses.add(new InetSocketAddress("127.0.0.1", 35000));
new DataSenderMaker().start();
}
public static DataSender getSender() {
return availableSenders.get(ThreadLocalRandom.current().nextInt(availableSenders.size()));
}
static class DataSenderMaker extends Thread {
public DataSenderMaker() {
// 初始化DataSender
Iterator<SocketAddress> it = socketAddresses.iterator();
List<SocketAddress> usedSocketAddress = new ArrayList<SocketAddress>();
for (SocketAddress socketAddress : socketAddresses) {
if (availableSenders.size() >= socketAddresses.size() / 2) {
break;
}
try {
availableSenders.add(new DataSender(socketAddress));
usedSocketAddress.add(socketAddress);
} catch (IOException e) {
unUsedSocketAddresses.add(socketAddress);
}
}
unUsedSocketAddresses = new ArrayList<SocketAddress>(socketAddresses);
unUsedSocketAddresses.removeAll(usedSocketAddress);
}
public void run() {
while (true) {
//当可用的Sender的数量和保存的地址的比例不在1:2,则不创建
for (SocketAddress socketAddress : unUsedSocketAddresses) {
if (availableSenders.size() >= socketAddresses.size() / 2) {
break;
}
try {
availableSenders.add(new DataSender(socketAddress));
} catch (IOException e) {
// 当前发送的地址还是不可用
}
}
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void unRegister(DataSender sender) {
availableSenders.remove(sender);
unUsedSocketAddresses.add(sender.getServerIp());
}
}
package com.ai.cloud.skywalking.sender.protocol;
public class ProtocolBuilder {
//协议格式:
// xx xx xx xx | xx xx xx xx xxx xxx xxx
// header(4) | content
public static byte[] builder(String data) {
byte[] content = data.getBytes();
byte[] header = intToByteArray(content.length);
byte[] des = new byte[header.length + content.length];
System.arraycopy(header, 0, des, 0, header.length);
System.arraycopy(content, 0, des, header.length, content.length);
return des;
}
private static byte[] intToByteArray(final int integer) {
int byteNum = (40 - Integer.numberOfLeadingZeros(integer < 0 ? ~integer : integer)) / 8;
byte[] byteArray = new byte[4];
for (int n = 0; n < byteNum; n++)
byteArray[3 - n] = (byte) (integer >>> (n * 8));
return (byteArray);
}
}
package com.ai.cloud.skywalking.util;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.UnknownHostException;
public final class BuriedPointMachineUtil {
private static String processNo;
private static String IP;
private static String hostName;
static {
processNo = getProcessNo();
}
public static String getProcessNo() {
if (StringUtil.isEmpty(processNo)) {
String name = ManagementFactory.getRuntimeMXBean().getName();
processNo = name.split("@")[0];
}
return processNo;
}
private static InetAddress getInetAddress() {
try {
return InetAddress.getLocalHost();
} catch (UnknownHostException e) {
hostName = "unknown host!";
}
return null;
}
public static String getHostIp() {
if (StringUtil.isEmpty(IP)) {
InetAddress netAddress = getInetAddress();
if (null == netAddress) {
return null;
}
IP = netAddress.getHostAddress(); //get the ip address
}
return IP;
}
public static String getHostName() {
if (StringUtil.isEmpty(hostName)) {
InetAddress netAddress = getInetAddress();
if (null == netAddress) {
return null;
}
hostName = netAddress.getHostName(); //get the host address
}
return hostName;
}
private BuriedPointMachineUtil() {
// Non
}
}
package com.ai.cloud.skywalking.util;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import com.ai.cloud.skywalking.model.ContextData;
import com.ai.cloud.skywalking.model.SendData;
public final class ContextGenerator {
/**
* 利用本地ThreadLocal的信息创建Context,主要用于非跨JVM的操作
*
* @param sendData 视点,业务数据等信息
* @return
*/
public static Span generateContextFromThreadLocal(SendData sendData) {
Span spanData = getContextFromThreadLocal();
// 设置基本属性
spanData.setStartDate(System.currentTimeMillis());
spanData.setProcessNo(BuriedPointMachineUtil.getProcessNo());
spanData.setAddress(BuriedPointMachineUtil.getHostName() + "/" + BuriedPointMachineUtil.getHostIp());
spanData.setViewPointId(sendData.getViewPoint());
return spanData;
}
/**
* 利用传入的Context对象,来构建相对应的Context信息,主要用于跨JVM的操作信息
* 跨JVM会产生两条记录。
*
* @param context
* @return
*/
public static Span generateContextFromContextData(ContextData context) {
Span spanData;
// 校验传入的参数是否为空,如果为空,则新创建一个
if (context == null || StringUtil.isEmpty(context.getTraceId())) {
// 不存在,新创建一个Context
spanData = new Span(TraceIdGenerator.generate());
spanData.setLevelId(0L);
} else {
// 如果不为空,则将当前的Context存放到上下文
spanData = new Span(context.getTraceId());
spanData.setParentLevel(context.getParentLevel());
}
// 设置基本信息
spanData.setStartDate(System.currentTimeMillis());
spanData.setProcessNo(BuriedPointMachineUtil.getProcessNo());
spanData.setAddress(BuriedPointMachineUtil.getHostName() + "/" + BuriedPointMachineUtil.getHostIp());
return spanData;
}
private static Span getContextFromThreadLocal() {
Span span;
// 1.获取Context,从ThreadLocal栈中获取中
final Span parentSpan = Context.getOrCreate().getLastSpan();
// 2 校验Context,Context是否存在
if (parentSpan == null) {
// 不存在,新创建一个Context
span = new Span(TraceIdGenerator.generate());
span.setLevelId(0L);
} else {
// 根据ParentContextData的TraceId和RPCID
span = new Span(parentSpan.getTraceId());
span.setParentLevel(parentSpan.getParentLevel());
span.setLevelId(parentSpan.getLevelId() + 1);
}
return span;
}
}
package com.ai.cloud.skywalking.util;
import com.ai.cloud.skywalking.context.Context;
import com.ai.cloud.skywalking.context.Span;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public final class ExceptionHandleUtil {
private static String extractExceptionStackMessage(final Throwable e) {
ByteArrayOutputStream buf = new ByteArrayOutputStream();
StringBuffer expMessage = new StringBuffer();
Throwable causeException = e;
while (causeException.getCause() != null) {
causeException.printStackTrace(new java.io.PrintWriter(buf, true));
expMessage.append(buf.toString());
causeException = causeException.getCause();
}
try {
buf.close();
} catch (IOException e1) {
expMessage.append("\n本地发送埋点关闭异常读入流异常,异常信息:");
expMessage.append(e1.getCause().getMessage());
}
return expMessage.toString();
}
public static void handleException(Throwable e) {
Span spanData = Context.getOrCreate().getLastSpan();
// 设置错误信息
byte errorCode = 1;
spanData.setStatueCode(errorCode);
spanData.setExceptionStack(extractExceptionStackMessage(e));
}
}
package com.ai.cloud.skywalking.util;
public final class StringUtil {
public static boolean isEmpty(String str) {
if (str == null || "".equals(str) || str.length() == 0) {
return true;
}
return false;
}
}
package com.ai.cloud.skywalking.util;
import java.util.UUID;
public final class TraceIdGenerator {
private TraceIdGenerator() {
// Non
}
public static String generate() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册