메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


* rdf4j-http-workbench모듈은 java servlet을 이용하여 구현했고, rdf4j-http-server는 spring기반으로 구현되어 있음


1. rdf4j-http-workbench : rdf4j-workbench.war를 이용하여 web에서 작업할때 사용되는 모듈(프로젝트)

  가. /rdf4j-http-workbench/src/main/webapp/WEB-INF/web.xml에서 workbench의 RESTFul API와 매핑되는 class파일을 지정함


*rdf4j-workbench.war의 API에서 사용되는 URL매핑(web.xml파일)

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<display-name>RDF4J Workbench</display-name>
	<description>RDF4J Workbench</description>

	<filter>
		<filter-name>redirect</filter-name>
		<filter-class>
			org.eclipse.rdf4j.workbench.proxy.RedirectFilter
		</filter-class>
		<init-param>
			<param-name>/</param-name>
			<param-value>/repositories</param-value>
		</init-param>
	</filter>

	<filter>
		<filter-name>cache</filter-name>
		<filter-class>
			org.eclipse.rdf4j.workbench.proxy.CookieCacheControlFilter
		</filter-class>
	</filter>

	<filter>
		<filter-name>CacheFilter</filter-name>
		<filter-class>org.eclipse.rdf4j.workbench.proxy.CacheFilter</filter-class>
		<init-param>
			<param-name>Cache-Control</param-name>
			<param-value>600</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>redirect</filter-name>
		<url-pattern>/</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>cache</filter-name>
		<url-pattern>/repositories/*</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>CacheFilter</filter-name>
		<url-pattern>*</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>workbench</servlet-name>
		<servlet-class>
			org.eclipse.rdf4j.workbench.proxy.WorkbenchGateway
		</servlet-class>
		<init-param>
			<param-name>transformations</param-name>
			<param-value>/transformations</param-value>
		</init-param>
		<init-param>
			<param-name>default-server</param-name>
			<param-value>/rdf4j-server</param-value>
		</init-param>
		<init-param>
			<param-name>accepted-server-prefixes</param-name>
			<param-value>file: http: https:</param-value>
		</init-param>
		<init-param>
			<param-name>change-server-path</param-name>
			<param-value>/NONE/server</param-value>
		</init-param>
		<init-param>
			<param-name>cookie-max-age</param-name>
			<param-value>2592000</param-value>
		</init-param>
		<init-param>
			<param-name>no-repository-id</param-name>
			<param-value>NONE</param-value>
		</init-param>
		<init-param>
			<param-name>default-path</param-name>
			<param-value>/NONE/repositories</param-value>
		</init-param>
		<init-param>
			<param-name>default-command</param-name>
			<param-value>/summary</param-value>
		</init-param>
		<init-param>
			<param-name>default-limit</param-name>
			<param-value>100</param-value>
		</init-param>
		<init-param>
			<param-name>default-queryLn</param-name>
			<param-value>SPARQL</param-value>
		</init-param>
		<init-param>
			<param-name>default-infer</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>default-Accept</param-name>
			<param-value>application/rdf+xml</param-value>
		</init-param>
		<init-param>
			<param-name>default-Content-Type</param-name>
			<param-value>application/rdf+xml</param-value>
		</init-param>
		<init-param>
			<param-name>/summary</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.SummaryServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/info</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.InfoServlet</param-value>
		</init-param>
		<init-param>
			<param-name>/information</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.InformationServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/repositories</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.RepositoriesServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/create</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.CreateServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/delete</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.DeleteServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/namespaces</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.NamespacesServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/contexts</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.ContextsServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/types</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.TypesServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/explore</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.ExploreServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/query</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.QueryServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/saved-queries</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.SavedQueriesServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/export</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.ExportServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/add</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.AddServlet</param-value>
		</init-param>
		<init-param>
			<param-name>/remove</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.RemoveServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/clear</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.ClearServlet
			</param-value>
		</init-param>
		<init-param>
			<param-name>/update</param-name>
			<param-value>org.eclipse.rdf4j.workbench.commands.UpdateServlet
			</param-value>
		</init-param>
	</servlet>

	<servlet-mapping>
		<servlet-name>workbench</servlet-name>
		<url-pattern>/repositories/*</url-pattern>
	</servlet-mapping>

</web-app>


  나. rdf4j-http-workbench.war에서 사용하는 class파일(예,StatementsController.java)은 "/rdf4j-http-server-spring/src/main/java/org/eclipse/rdf4j/http/server/repository/statements/StatementsController.java"등에 위치함


2. rdf4j-http-server : rdf4j-server.war를 이용하여 RESTFul API를 호출할때 사용되는 모듈(프로젝트)

  가. /rdf4j-http-server/src/main/webapp/WEB-INF/web.xml에서 아래와 같이 설정xml파일을 지정함

<servlet>
	    <servlet-name>rdf4j-http-server</servlet-name>
    	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	    <init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/common-webapp-servlet.xml, /WEB-INF/common-webapp-system-servlet.xml, /WEB-INF/rdf4j-http-server-servlet.xml</param-value>
		</init-param>
	    <load-on-startup>100</load-on-startup>
	</servlet>

  나. /rdf4j-http-server/src/main/webapp/WEB-INF/rdf4j-http-server-servlet.xml에서 API와 매핑되는 class파일을 지정함


*rdf4j-server.war의 repository관련 API에서 사용되는 URL매핑

<bean id="rdf4jRepositoryUrlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="order" value="2" />
		<property name="alwaysUseFullPath" value="true" />
		<property name="mappings">
			<props>
				<prop key="/repositories/*/namespaces/*">rdf4jRepositoryNamespaceController</prop>
				<prop key="/repositories/*/namespaces">rdf4jRepositoryNamespacesController</prop>
				<prop key="/repositories/*/contexts">rdf4jRepositoryContextsController</prop>
				<prop key="/repositories/*/statements">rdf4jRepositoryStatementsController</prop>
				<prop key="/repositories/*/rdf-graphs">rdf4jRepositoryContextsController</prop>
				<prop key="/repositories/*/rdf-graphs/*">rdf4jRepositoryGraphController</prop>
				<prop key="/repositories/*/size">rdf4jRepositorySizeController</prop>
				<prop key="/repositories/*/transactions">rdf4jRepositoryTransactionStartController</prop>
				<prop key="/repositories/*/transactions/*">rdf4jRepositoryTransactionController</prop>
				<prop key="/repositories/*">rdf4jRepositoryController</prop>
			</props>
		</property>
		<property name="interceptors">
			<list>
				<ref bean="rdf4jRepositoryInterceptor" />
			</list>
		</property>
	</bean>


*URL매핑에 해당되는 처리 class매핑

<!-- CONTROLLERS -->
	<bean id="rdf4jProtocolController" class="org.eclipse.rdf4j.http.server.protocol.ProtocolController" />

	<bean id="rdf4jRepositoryListController"
		class="org.eclipse.rdf4j.http.server.repository.RepositoryListController">
		<property name="repositoryManager" ref="rdf4jRepositoryManager" />
	</bean>
	<bean id="rdf4jRepositoryController" class="org.eclipse.rdf4j.http.server.repository.RepositoryController">
		<property name="repositoryManager" ref="rdf4jRepositoryManager" />
	</bean>
	<bean id="rdf4jRepositoryContextsController"
		class="org.eclipse.rdf4j.http.server.repository.contexts.ContextsController" />
	<bean id="rdf4jRepositoryNamespacesController"
		class="org.eclipse.rdf4j.http.server.repository.namespaces.NamespacesController" />
	<bean id="rdf4jRepositoryNamespaceController"
		class="org.eclipse.rdf4j.http.server.repository.namespaces.NamespaceController" />
	<bean id="rdf4jRepositorySizeController" class="org.eclipse.rdf4j.http.server.repository.size.SizeController" />
	<bean id="rdf4jRepositoryStatementsController"
		class="org.eclipse.rdf4j.http.server.repository.statements.StatementsController" />
	<bean id="rdf4jRepositoryGraphController"
		class="org.eclipse.rdf4j.http.server.repository.graph.GraphController" />
	<bean id="rdf4jRepositoryTransactionController"
		class="org.eclipse.rdf4j.http.server.repository.transaction.TransactionController" />
	<bean id="rdf4jRepositoryTransactionStartController"
		class="org.eclipse.rdf4j.http.server.repository.transaction.TransactionStartController" />

다 rdf4j-server.war가 사용하는 class파일은(예, StatementsController.java) "/rdf4j-http-server-spring/src/main/java/org/eclipse/rdf4j/http/server/repository/statements/StatementsController.java"에 위치함

번호 제목 글쓴이 날짜 조회 수
520 CentOS 7.x에 Jupyter설치 총관리자 2018.04.18 550
519 외부 기기(usb, 하드)등 mount(연결)하기 총관리자 2014.08.03 546
518 spark-shell을 실행하면 "Attempted to request executors before the AM has registered!"라는 오류가 발생하면 총관리자 2018.06.08 543
517 spark client프로그램 기동시 "Error initializing SparkContext"오류 발생할때 조치사항 총관리자 2016.05.27 539
516 hadoop의 data디렉토리를 변경하는 방법 총관리자 2014.08.24 536
515 [Kudu]ERROR: Unable to advance iterator for node with id '2' for Kudu table 'impala::core.pm0_abdasubjct': Network error: recv error from unknown peer: Transport endpoint is not connected (error 107) gooper 2023.03.16 535
514 Kafka Offset Monitor로 kafka 상태 모니터링 하기 file 총관리자 2016.11.08 528
513 Ubuntu 16.04 LTS에 4대에 Hadoop 2.8.0설치 총관리자 2017.05.01 520
512 spark-submit 실행시 "java.lang.OutOfMemoryError: Java heap space"발생시 조치사항 총관리자 2018.02.01 517
511 anaconda3 (v5.2) 설치및 머신러닝 관련 라이브러리 설치 절차 총관리자 2018.07.27 513
510 동시에 많은 요청이 endpoint로 몰려서java.net.NoRouteToHostException가 발생하는 경우의 처리방법 총관리자 2016.10.17 508
509 데이타 제공 사이트 링크 총관리자 2014.08.03 508
508 CDH에서 Sentry 개념및 설정 file 총관리자 2018.06.21 504
507 compile할때와 exclude할때 대상을 표현하는 명칭이 다르므로 주의할것 총관리자 2016.08.10 503
506 hive기동시 Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D 오류 발생시 조치사항 총관리자 2016.09.25 496
505 원격지에서 zio공유기를 통해서 노트북의 mysql접속을 허용하는 방법 총관리자 2014.09.07 494
504 [dovecot]dovecot restart할때 root@gsda4:/usr/lib/dovecot# service dovecot restart 오류 발생시 조치사항 총관리자 2017.06.12 492
503 Incompatible clusterIDs오류 원인및 해결방법 총관리자 2016.04.01 490
502 시스템날짜를 현재 정보로 동기화 하는 방법(rdate, ntpdate이용) 총관리자 2014.08.24 481
501 DataSetCreator실행시 "Illegal character in fragment at index"오류가 나는 경우 조치방안 총관리자 2016.06.17 480

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로