2017-01-10 54 views
0

私はejbマルチモジュールアプリケーションを使っています。私はWildfly 8.1.0.Finalを使用しています。ジオープ。注入点[BackedAnnotatedField]で@Default修飾子付きのGeoIpControllerタイプの満足していない依存関係

物理サーバーでの展開時に問題があります。プログラムはネットビーンで動作していますが、私のサーバでは動作していません。私は間違っている。これは、JBoss管理の物理サーバで使用するプロセスです。 geoipのファイルとルート:

/home/javier/Servers/wildfly-8.1.0.Final/modules/system/layers/base/com/maxmind/db/maxmind-db/1.0.0maxmind-db-1.0.0.jar 
/home/javier/Servers/wildfly-8.1.0.Final/modules/system/layers/base/com/maxmind/geoip2/geoip2/2.1.0geoip2-2.1.0.jar 

1私のクラス(pojos、interfaces ...)ファイルを展開します。

2度自分のejb(プログラムのロジック)ファイルをデプロイします。

3度私はwarファイル(Webコンポーネント)をデプロイしますが、この時点では問題があります。このファイルを展開することはできません。

これは私が間違ってやっている、エラーです:

17:58:45,313 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."SertuxSearchIt-web-1.0-SNAPSHOT.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."SertuxSearchIt-web-1.0-SNAPSHOT.war".WeldStartService: Failed to start service 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_111] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_111] 
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_111] 
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 3 exceptions: 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp 
    at com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp(HeaderAddContentController.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp 
    at com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type AppScoped with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.filter.SearchFilter.appScoped 
    at com.sertux.searchit.jsf.filter.SearchFilter.appScoped(SearchFilter.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.util.AppScoped is on the classpath, but was ignored because a class it references was not found: com.sertux.searchit.api.domain.type.EditionType from [Module "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

at org.jboss.weld.bootstrap.ConcurrentValidator.validateBeans(ConcurrentValidator.java:76) 
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:475) 
at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:392) 
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:85) 
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:93) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final] 
... 3 more 

17:58:45,320 ERROR [org.jboss.as.controller.management-operation] (XNIO-1 task-2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "SertuxSearchIt-web-1.0-SNAPSHOT.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService: Failed to start service 
    Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 3 exceptions: 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp 
    at com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp(HeaderAddContentController.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp 
    at com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type AppScoped with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.filter.SearchFilter.appScoped 
    at com.sertux.searchit.jsf.filter.SearchFilter.appScoped(SearchFilter.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.util.AppScoped is on the classpath, but was ignored because a class it references was not found: com.sertux.searchit.api.domain.type.EditionType from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
"}} 
17:58:45,325 ERROR [org.jboss.as.server] (XNIO-1 task-2) JBAS015870: Deploy of deployment "SertuxSearchIt-web-1.0-SNAPSHOT.war" was rolled back with the following failure message: 
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"SertuxSearchIt-web-1.0-SNAPSHOT.war\".WeldStartService: Failed to start service 
    Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 3 exceptions: 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type GeoIpController with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp 
    at com.sertux.searchit.jsf.controller.addcontent.HeaderAddContentController.geoIp(HeaderAddContentController.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.geoip.GeoIpController is on the classpath, but was ignored because a class it references was not found: com.maxmind.geoip2.DatabaseReader from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Exception 0 : 

org.jboss.weld.exceptions.DeploymentException:WELD-001408:注入点で @default修飾子を持つタイプGeoIpControllerのための不満の依存関係を[BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0) WELD-001474:クラスcom.sertux.searchit.jsf.controller.geoip.GeoIpControllerはクラスパス上にありますが、参照されているクラスサービスモジュールローダの[Module \ "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main \"]のcom.maxmind.geoip2.DatabaseReaderが見つかりませんでした。

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Exception 0 : 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type AppScoped with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private com.sertux.searchit.jsf.filter.SearchFilter.appScoped 
    at com.sertux.searchit.jsf.filter.SearchFilter.appScoped(SearchFilter.java:0) 
WELD-001474: Class com.sertux.searchit.jsf.controller.util.AppScoped is on the classpath, but was ignored because a class it references was not found: com.sertux.searchit.api.domain.type.EditionType from [Module \"deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main\" from Service Module Loader]. 

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368) 
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289) 
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135) 
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166) 
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) 
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
"}} 

クラス:

package com.sertux.searchit.jsf.controller.addcontent; 

import com.sertux.searchit.api.shiro.ShiroSecured; 
import com.sertux.searchit.jsf.controller.geoip.GeoIpController; 
import java.io.Serializable; 
import javax.faces.view.ViewScoped; 
import javax.inject.Inject; 
import javax.inject.Named; 
import org.slf4j.LoggerFactory; 

@Named 
@ViewScoped 
@ShiroSecured 
public class HeaderAddContentController implements Serializable { 

private static final org.slf4j.Logger log = LoggerFactory.getLogger(HeaderAddContentController.class); 
private static final String KEY_SERVICE_NULL_OR_EMPTY_LOGIN_NAME_EXCEPTION = "View_global_SERVICE_NULL_OR_EMPTY_LOGIN_NAME_EXCEPTION"; 
private static final String KEY_SERVICE_UNKNOWN_USER_WITH_LOGIN_NAME_EXCEPTION = "View_global_SERVICE_UNKNOWN_USER_WITH_LOGIN_NAME_EXCEPTION"; 
@Inject 
private GeoIpController geoIp; 

public HeaderAddContentController() { 
} 

public GeoIpController getGeoIp() { 
    return geoIp; 
} 

public void setGeoIp(GeoIpController geoIp) { 
    this.geoIp = geoIp; 
} 

} 

GeoIpController:WARファイルをパッケージ化された方法

package com.sertux.searchit.jsf.controller.geoip; 

import com.maxmind.geoip2.DatabaseReader; 
import com.maxmind.geoip2.exception.GeoIp2Exception; 
import com.maxmind.geoip2.model.CityResponse; 
import com.maxmind.geoip2.record.City; 
import com.maxmind.geoip2.record.Country; 
import com.maxmind.geoip2.record.Location; 
import com.maxmind.geoip2.record.Postal; 
import com.maxmind.geoip2.record.Subdivision; 
import com.sertux.searchit.api.domain.util.LocationIpSertux; 
import java.io.File; 
import java.io.IOException; 
import java.net.InetAddress; 
import java.net.UnknownHostException; 
import javax.enterprise.context.ApplicationScoped; 
import javax.inject.Named; 
import org.slf4j.LoggerFactory; 


@Named 
@ApplicationScoped 
public class GeoIpController { 

private static final org.slf4j.Logger log = LoggerFactory.getLogger(GeoIpController.class); 
private static final String PATH_GEOIP_DATABASE = "/usr/share/GeoIP/GeoLite2-City.mmdb"; 
private static DatabaseReader reader; 

public GeoIpController() { 
    log.info(String.format("Loading GeoIpController file: %s", PATH_GEOIP_DATABASE)); 
    try { 
     // A File object pointing to your GeoIP2 or GeoLite2 database 
     File database = new File(PATH_GEOIP_DATABASE); 

     // This creates the DatabaseReader object, which should be reused across 
     // lookups. 
     reader = new DatabaseReader.Builder(database).build(); 
     log.info(String.format("Loaded GeoIpController file successfully: %s", PATH_GEOIP_DATABASE)); 
    } catch (IOException ex) { 
     log.error("Error loading GeoIpController", ex); 
    } 
} 

/** 
* latitude longitude locationText locationAccuracy countryIsoCode 
* countryName mostSpecificSubdivisionIsoCode mostSpecificSubdivisionName 
* cityName postalCode 
* 
* @param ip ip address 
* 
*/ 
public LocationIpSertux getCoords(String ip) { 
    try { 
     InetAddress ipAddress = InetAddress.getByName(ip); 
     CityResponse response = reader.city(ipAddress); 
     Country country = response.getCountry(); 
     Subdivision subdivision = response.getMostSpecificSubdivision(); 
     City city = response.getCity(); 
     Postal postal = response.getPostal(); 
     Location location = response.getLocation(); 

     return new LocationIpSertux(
       String.format("%s_%s_%s_%s_%s_%s_%s_%s_%s", 
         country.getIsoCode(), country.getName(), 
         subdivision.getName(), subdivision.getIsoCode(), 
         city.getName(), 
         postal.getCode(), 
         location.getLatitude(), 
         location.getLongitude(), 
         location.getAccuracyRadius()), 
       location.getLatitude(), 
       location.getLongitude(), 
       location.getAccuracyRadius() == null ? 0 : location.getAccuracyRadius(), 
       country.getIsoCode(), 
       country.getName(), 
       subdivision.getIsoCode(), 
       subdivision.getName(), 
       city.getName(), 
       postal.getCode()); 
    } catch (UnknownHostException ex) { 
//   log.error("UnknownHostException:", ex); 
    } catch (IOException ex) { 
//   log.error("IOException:", ex); 
    } catch (GeoIp2Exception ex) { 
//   log.error("GeoIp2Exception:", ex); 
    } 
    return null; 
} 

public DatabaseReader getReader() { 
    return reader; 
} 

public void setReader(DatabaseReader reader) { 
    this.reader = reader; 
} 

} 

答えて

0

GeoIpController豆の製造方法は?どの瓶にはそれがありますか?

さらに詳しい情報が必要です。

+0

GeoIpControllerは、warファイルのJavaクラスです。ウェブパッケージ内にあります。 Geoipは依存関係です。スタックトレースを見ると com.maxmind.geoip2 geoip2 2.1.0 xav56883728

+0

、いくつかのメッセージが関連しています: 'WELD-001474:クラスcom.sertux.searchit.jsf.controller.geoip .GeoIpControllerはクラスパス上にありますが、参照するクラスが見つからないため無視されました:com.maxmind.geoip2.DatabaseReaderから[Module \ "deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main \" from Service Module Loader ] .' 'DatabaseReader'はどこにありますか? – Rouliboy

+0

はい、どうすればこの問題を解決できますか?いくつかのアイデア? – xav56883728

関連する問題