2017-01-10 38 views
0

我正在使用ejb multimodule應用程序。我正在使用Wildfly 8.1.0.Final。和GeoIp。帶有限定符的GeoIpController類型的不滿意的依賴關係@Default在注入點[BackedAnnotatedField]

我在部署時在物理服務器上遇到麻煩。該程序正在使用netbeans,但不在我的服務器上。我做錯了什麼。這是我在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º我部署了戰爭文件(網絡組件),但此刻我有麻煩。我無法部署此文件。

這是錯誤的,我做錯了什麼:

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 at com.sertux.searchit.jsf.controller.addcontent.MenuAddContentController.geoIp(MenuAddContentController.java:0) WELD-001474: com.sertux.searchit.jsf.controller.geoip.GeoIpController類位於類路徑中,但被忽略,因爲它引用的類es找不到:來自[Module \「deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main \」來自Service Module Loader]的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:

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

如何打包WAR文件?

如何生產GeoIpController豆?它位於哪個罐子裏?

我們需要更多信息來幫助您。

+0

GeoIpController是war類文件的java類。位於Web包中。 Geoip是一個依賴項。 com.maxmind.geoip2 geoip2 2.1.0 xav56883728

+0

綜觀棧跟蹤,一些消息是相關的:'WELD-001474:類com.sertux.searchit.jsf.controller.geoip .GeoIpController位於類路徑中,但由於未找到它引用的類而被忽略:來自Service Module Loader的[Module \「deployment.SertuxSearchIt-web-1.0-SNAPSHOT.war:main \」中的com.maxmind.geoip2.DatabaseReader ]。'位於'DatabaseReader'的位置? – Rouliboy

+0

是的,但我該如何解決這個麻煩?一些想法? – xav56883728

相關問題